Message ID | 49F71052.4060505@harris.com |
---|---|
State | New, archived |
Headers | show |
I sent the following patch about a month ago. There seemed to be some interest, but I never saw anyone say they would/could merge it. So, is there any interest in merging this? Steve > There is a logic error in "whole chip erase" for the m25p80 family. If > the whole device is successfully erased, erase_chip() will return 0, and > the code will fall through to the "else" clause, and do sector-by-sector > erase in addition to the whole-chip erase. This patch corrects that. > > Signed-off-by: Steven A. Falco <sfalco@harris.com> > --- > > diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c > index 6659b22..3a2fed8 100644 > --- a/drivers/mtd/devices/m25p80.c > +++ b/drivers/mtd/devices/m25p80.c > @@ -251,10 +251,12 @@ static int m25p80_erase(struct mtd_info *mtd, struct erase_info *instr) > mutex_lock(&flash->lock); > > /* whole-chip erase? */ > - if (len == flash->mtd.size && erase_chip(flash)) { > - instr->state = MTD_ERASE_FAILED; > - mutex_unlock(&flash->lock); > - return -EIO; > + if (len == flash->mtd.size) { > + if (erase_chip(flash)) { > + instr->state = MTD_ERASE_FAILED; > + mutex_unlock(&flash->lock); > + return -EIO; > + } > > /* REVISIT in some cases we could speed up erasing large regions > * by using OPCODE_SE instead of OPCODE_BE_4K. We may have set up >
On Wed, 2009-05-27 at 09:53 -0400, Steven A. Falco wrote: > I sent the following patch about a month ago. There seemed to > be some interest, but I never saw anyone say they would/could > merge it. > > So, is there any interest in merging this? It is already in linus's tree: http://git.infradead.org/linux-2.6.git?a=commit;h=3f33b0aaac4e208579fe5aa2964857d4e9ba10c5
Artem Bityutskiy wrote: > On Wed, 2009-05-27 at 09:53 -0400, Steven A. Falco wrote: >> I sent the following patch about a month ago. There seemed to >> be some interest, but I never saw anyone say they would/could >> merge it. >> >> So, is there any interest in merging this? > > It is already in linus's tree: > http://git.infradead.org/linux-2.6.git?a=commit;h=3f33b0aaac4e208579fe5aa2964857d4e9ba10c5 > Thanks! I never saw the email indicating that it had been accepted. Sorry for the noise. Steve
diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index 6659b22..3a2fed8 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -251,10 +251,12 @@ static int m25p80_erase(struct mtd_info *mtd, struct erase_info *instr) mutex_lock(&flash->lock); /* whole-chip erase? */ - if (len == flash->mtd.size && erase_chip(flash)) { - instr->state = MTD_ERASE_FAILED; - mutex_unlock(&flash->lock); - return -EIO; + if (len == flash->mtd.size) { + if (erase_chip(flash)) { + instr->state = MTD_ERASE_FAILED; + mutex_unlock(&flash->lock); + return -EIO; + } /* REVISIT in some cases we could speed up erasing large regions * by using OPCODE_SE instead of OPCODE_BE_4K. We may have set up
There is a logic error in "whole chip erase" for the m25p80 family. If the whole device is successfully erased, erase_chip() will return 0, and the code will fall through to the "else" clause, and do sector-by-sector erase in addition to the whole-chip erase. This patch corrects that. Signed-off-by: Steven A. Falco <sfalco@harris.com> ---