浏览代码

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>
David Brownell 16 年之前
父节点
当前提交
81d19b04a8
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      drivers/mtd/nand/nand_base.c

+ 2 - 1
drivers/mtd/nand/nand_base.c

@@ -2756,7 +2756,8 @@ int nand_scan_tail(struct mtd_info *mtd)
 	 * the out of band area
 	 * the out of band area
 	 */
 	 */
 	chip->ecc.layout->oobavail = 0;
 	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->oobavail +=
 			chip->ecc.layout->oobfree[i].length;
 			chip->ecc.layout->oobfree[i].length;
 	mtd->oobavail = chip->ecc.layout->oobavail;
 	mtd->oobavail = chip->ecc.layout->oobavail;