mtd: nand: omap: fix ecclayout->oobfree->length
authorPekon Gupta <pekon@ti.com>
Mon, 17 Feb 2014 07:41:25 +0000 (13:11 +0530)
committerBrian Norris <computersforpeace@gmail.com>
Sun, 23 Feb 2014 22:49:57 +0000 (14:49 -0800)
This patch excludes reserved-marker byte-position from oobfree->length
calculation. Thus all bytes from oobfree->offset till end of OOB are free.

CC: <stable@vger.kernel.org> # 3.13.x+
Signed-off-by: Pekon Gupta <pekon@ti.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/omap2.c

index 58685ab6d8658cf77280b721a9319a1f8a711864..bf642ceef68172b4575d8e9d3263320e0fc7095a 100644 (file)
@@ -1994,9 +1994,8 @@ static int omap_nand_probe(struct platform_device *pdev)
                goto return_error;
        }
 
-       /* populate remaining ECC layout data */
-       ecclayout->oobfree->length = mtd->oobsize - (BADBLOCK_MARKER_LENGTH +
-                                                       ecclayout->eccbytes);
+       /* all OOB bytes from oobfree->offset till end off OOB are free */
+       ecclayout->oobfree->length = mtd->oobsize - ecclayout->oobfree->offset;
        /* check if NAND device's OOB is enough to store ECC signatures */
        if (mtd->oobsize < (ecclayout->eccbytes + BADBLOCK_MARKER_LENGTH)) {
                pr_err("not enough OOB bytes required = %d, available=%d\n",