diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-04-21 19:51:20 -0700 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-06-05 17:39:09 +0100 |
commit | 81d19b04a865f9fcc0ca01b20be806169ff9efb3 (patch) | |
tree | 1d0a17203cf483b29ca45b0a35703f45198f18c2 /drivers/mtd | |
parent | 24430abc88c67e3df2f06c96a6ccd73bda4c92f0 (diff) | |
download | op-kernel-dev-81d19b04a865f9fcc0ca01b20be806169ff9efb3.zip op-kernel-dev-81d19b04a865f9fcc0ca01b20be806169ff9efb3.tar.gz |
mtd: nand: don't walk past end of oobfree[]
Resolve issue noted by Sneha: when computing oobavail from
the list of free areas in the OOB, don't assume there will
always be an unused slot at the end. With ECC_HW_SYNDROME
and 4KiB page chips, it's fairly likely there *won't* be one.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: "Narnakaje, Snehaprabha" <nsnehaprabha@ti.com>"
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/nand/nand_base.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 3d7ed43..8c21b89 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -2756,7 +2756,8 @@ int nand_scan_tail(struct mtd_info *mtd) * the out of band area */ chip->ecc.layout->oobavail = 0; - for (i = 0; chip->ecc.layout->oobfree[i].length; i++) + for (i = 0; chip->ecc.layout->oobfree[i].length + && i < ARRAY_SIZE(chip->ecc.layout->oobfree); i++) chip->ecc.layout->oobavail += chip->ecc.layout->oobfree[i].length; mtd->oobavail = chip->ecc.layout->oobavail; |