Message ID | trinity-0c92e0e4-dcf8-4753-a934-f2cc41b5e6de-1642021707668@3c-app-mailcom-lxa14 |
---|---|
State | Superseded |
Headers | show |
Series | mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status | expand |
On 1/12/2022 1:08 PM, david regan wrote: > 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 <dregan@mail.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Thanks David!
+Miquel, On 1/12/2022 1:08 PM, david regan wrote: > 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 <dregan@mail.com> Miquel since you were not copied explicitly, adding you now. Re-sending my tag: Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Hi Florian, f.fainelli@gmail.com wrote on Tue, 25 Jan 2022 10:59:19 -0800: > +Miquel, > > On 1/12/2022 1:08 PM, david regan wrote: > > 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 <dregan@mail.com> > > Miquel since you were not copied explicitly, adding you now. Re-sending my tag: > > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Right I missed that. Thanks, Miquèl
Hi David, f.fainelli@gmail.com wrote on Tue, 25 Jan 2022 10:59:19 -0800: > +Miquel, > > On 1/12/2022 1:08 PM, david regan wrote: > > 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 <dregan@mail.com> > > Miquel since you were not copied explicitly, adding you now. Re-sending my tag: > > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> This change does not apply to my tree, please look at the series from Florian on nand/next (kernel.org repository named mtd). If it conflicts with your fix, then rebase on top of nand/next. Otherwise please rebase on top of mtd/fixes. And don't forget to keep the Reviewed-by tag from Florian and to keep me in To/Cc of your v2. Thanks, Miquèl
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index f759297..aee78f5 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -2106,7 +2106,7 @@ static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip, mtd->oobsize / trans, host->hwcfg.sector_size_1k); - if (!ret) { + if (ret != -EBADMSG) { *err_addr = brcmnand_get_uncorrecc_addr(ctrl); if (*err_addr)
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 <dregan@mail.com> --- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 1.8.3.1