]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mtd: rawnand: omap2: Fix number of bitflips reporting with ELM
authorSascha Hauer <s.hauer@pengutronix.de>
Tue, 27 Aug 2019 10:36:53 +0000 (12:36 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 29 Aug 2019 12:28:09 +0000 (14:28 +0200)
omap_elm_correct_data() returns the number of bitflips for the whole
page. This is wrong, it should return the maximum number of bitflips
found in each ECC step.

In my case with a 4k page size NAND mtcdore reported -EUCLEAN with
only 12 bitflips on a page where we could correct up to 128 bits per
page (provided they are distributed equally on the 8 ECC steps)

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/omap2.c

index 8d881a28140effcac9943ed85568a266d5cdb0a7..6ec65f48501c032bbcc5eae8c063d28f63c60a56 100644 (file)
@@ -1501,7 +1501,7 @@ static int omap_elm_correct_data(struct nand_chip *chip, u_char *data,
                }
 
                /* Update number of correctable errors */
-               stat += err_vec[i].error_count;
+               stat = max_t(unsigned int, stat, err_vec[i].error_count);
 
                /* Update page data with sector size */
                data += ecc->size;