diff options
Diffstat (limited to 'target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch')
-rw-r--r-- | target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch b/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch deleted file mode 100644 index e8a9f14881..0000000000 --- a/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch +++ /dev/null @@ -1,63 +0,0 @@ -From dcb351c03f2fa6a599de1061b174167e03ee312b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com> -Date: Tue, 12 May 2020 10:24:51 +0200 -Subject: [PATCH] mtd: rawnand: brcmnand: correctly verify erased pages -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current code checks that the whole OOB area is erased. -This is a problem when JFFS2 cleanmarkers are added to the OOB, since it will -fail due to the usable OOB bytes not being 0xff. -Correct this by only checking that data and ECC bytes aren't 0xff. - -Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page bitflips") -Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> -Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> -Link: https://lore.kernel.org/linux-mtd/20200512082451.771212-1-noltari@gmail.com ---- - drivers/mtd/nand/raw/brcmnand/brcmnand.c | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - ---- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c -+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c -@@ -1787,28 +1787,31 @@ static int brcmnand_read_by_pio(struct m - static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd, - struct nand_chip *chip, void *buf, u64 addr) - { -- int i, sas; -- void *oob = chip->oob_poi; -+ struct mtd_oob_region ecc; -+ int i; - int bitflips = 0; - int page = addr >> chip->page_shift; - int ret; -+ void *ecc_bytes; - void *ecc_chunk; - - if (!buf) - buf = nand_get_data_buf(chip); - -- sas = mtd->oobsize / chip->ecc.steps; -- - /* read without ecc for verification */ - ret = chip->ecc.read_page_raw(chip, buf, true, page); - if (ret) - return ret; - -- for (i = 0; i < chip->ecc.steps; i++, oob += sas) { -+ for (i = 0; i < chip->ecc.steps; i++) { - ecc_chunk = buf + chip->ecc.size * i; -- ret = nand_check_erased_ecc_chunk(ecc_chunk, -- chip->ecc.size, -- oob, sas, NULL, 0, -+ -+ mtd_ooblayout_ecc(mtd, i, &ecc); -+ ecc_bytes = chip->oob_poi + ecc.offset; -+ -+ ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size, -+ ecc_bytes, ecc.length, -+ NULL, 0, - chip->ecc.strength); - if (ret < 0) - return ret; |