[3.13.y.z extended stable] Patch "mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in erased-page" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Tue Jul 15 21:29:17 UTC 2014


This is a note to let you know that I have just added a patch titled

    mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in erased-page

to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree 
which can be found at:

 http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.13.y-queue

This patch is scheduled to be released in version 3.13.11.5.

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.13.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Kamal

------

>From 93290caa59e8b3eca491e4d2c0c966232fb2876a Mon Sep 17 00:00:00 2001
From: pekon gupta <pekon at ti.com>
Date: Thu, 20 Mar 2014 18:49:58 +0530
Subject: mtd: nand: omap: fix BCHx ecc.correct to return detected bit-flips in
 erased-page

commit f306e8c3b667632952f1a4a74ffb910bbc06255f upstream.

fixes: commit 62116e5171e00f85a8d53f76e45b84423c89ff34
       mtd: nand: omap2: Support for hardware BCH error correction.

In omap_elm_correct_data(), if bitflip_count in an erased-page is within the
correctable limit (< ecc.strength), then it is not indicated back to the caller
ecc->read_page().

This mis-guides upper layers like MTD and UBIFS layer to assume erased-page as
perfectly clean and use it for writing even if actual bitflip_count was
dangerously high (bitflip_count > mtd->bitflip_threshold).

This patch fixes this above issue, by returning 'stats' to caller
ecc->read_page() under all scenarios.

Reported-by: Brian Norris <computersforpeace at gmail.com>
Signed-off-by: Pekon Gupta <pekon at ti.com>
Signed-off-by: Brian Norris <computersforpeace at gmail.com>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
 drivers/mtd/nand/omap2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
index 2365b5a..b594e61 100644
--- a/drivers/mtd/nand/omap2.c
+++ b/drivers/mtd/nand/omap2.c
@@ -1451,7 +1451,7 @@ static int omap_elm_correct_data(struct mtd_info *mtd, u_char *data,

 	/* Check if any error reported */
 	if (!is_error_reported)
-		return 0;
+		return stat;

 	/* Decode BCH error using ELM module */
 	elm_decode_bch_error_page(info->elm_dev, ecc_vec, err_vec);
--
1.9.1





More information about the kernel-team mailing list