From: Greg Kroah-Hartman Date: Fri, 25 Feb 2022 09:02:36 +0000 (+0100) Subject: 4.9-stable patches X-Git-Tag: v4.9.304~75 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2672f51b7df81e78282c0de96c5bf72c4d313d9d;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: mtd-rawnand-brcmnand-fixed-incorrect-sub-page-ecc-status.patch --- diff --git a/queue-4.9/mtd-rawnand-brcmnand-fixed-incorrect-sub-page-ecc-status.patch b/queue-4.9/mtd-rawnand-brcmnand-fixed-incorrect-sub-page-ecc-status.patch new file mode 100644 index 00000000000..117c89c617c --- /dev/null +++ b/queue-4.9/mtd-rawnand-brcmnand-fixed-incorrect-sub-page-ecc-status.patch @@ -0,0 +1,45 @@ +From 36415a7964711822e63695ea67fede63979054d9 Mon Sep 17 00:00:00 2001 +From: david regan +Date: Wed, 26 Jan 2022 23:43:44 +0100 +Subject: mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status + +From: david regan + +commit 36415a7964711822e63695ea67fede63979054d9 upstream. + +The brcmnand driver contains a bug in which if a page (example 2k byte) +is read from the parallel/ONFI NAND and within that page a subpage (512 +byte) has correctable errors which is followed by a subpage with +uncorrectable errors, the page read will return the wrong status of +correctable (as opposed to the actual status of uncorrectable.) + +The bug is in function brcmnand_read_by_pio where there is a check for +uncorrectable bits which will be preempted if a previous status for +correctable bits is detected. + +The fix is to stop checking for bad bits only if we already have a bad +bits status. + +Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") +Signed-off-by: david regan +Reviewed-by: Florian Fainelli +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/trinity-478e0c09-9134-40e8-8f8c-31c371225eda-1643237024774@3c-app-mailcom-lxa02 +[florian: make patch apply to 4.14, file was renamed] +Signed-off-by: Florian Fainelli +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/brcmnand/brcmnand.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/nand/brcmnand/brcmnand.c ++++ b/drivers/mtd/nand/brcmnand/brcmnand.c +@@ -1637,7 +1637,7 @@ static int brcmnand_read_by_pio(struct m + mtd->oobsize / trans, + host->hwcfg.sector_size_1k); + +- if (!ret) { ++ if (ret != -EBADMSG) { + *err_addr = brcmnand_read_reg(ctrl, + BRCMNAND_UNCORR_ADDR) | + ((u64)(brcmnand_read_reg(ctrl, diff --git a/queue-4.9/series b/queue-4.9/series index e69de29bb2d..e8e53aabba7 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -0,0 +1 @@ +mtd-rawnand-brcmnand-fixed-incorrect-sub-page-ecc-status.patch