]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mtd: rawnand: sunxi: replace hard coded value by a define - take2
authorRichard Genoud <richard.genoud@bootlin.com>
Tue, 17 Mar 2026 14:24:32 +0000 (15:24 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Wed, 25 Mar 2026 14:27:30 +0000 (15:27 +0100)
The user data length (4) has been replaced almost all over the file, but
2 places were forgotten.

The user data is placed before the ECC, for each step.
So, in sunxi_nfc_hw_ecc_read_extra_oob(), the offset of the user data in
OOB is indeed ((ecc->bytes + USER_DATA_SZ) * ecc->steps);

And in sunxi_nand_ooblayout_ecc(), the offset of the ECC chunk in OOB is
the same offset plus the current user data size:
section * (ecc->bytes + USER_DATA_SZ) + USER_DATA_SZ;

Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/sunxi_nand.c

index d126dc18ef276e0916514da79dcce1d275bb4f15..0b0b5349f44668dbc2ae0cc51548520b414a3fb8 100644 (file)
@@ -1045,7 +1045,7 @@ static void sunxi_nfc_hw_ecc_read_extra_oob(struct nand_chip *nand,
 {
        struct mtd_info *mtd = nand_to_mtd(nand);
        struct nand_ecc_ctrl *ecc = &nand->ecc;
-       int offset = ((ecc->bytes + 4) * ecc->steps);
+       int offset = ((ecc->bytes + USER_DATA_SZ) * ecc->steps);
        int len = mtd->oobsize - offset;
 
        if (len <= 0)
@@ -1741,7 +1741,7 @@ static int sunxi_nand_ooblayout_ecc(struct mtd_info *mtd, int section,
        if (section >= ecc->steps)
                return -ERANGE;
 
-       oobregion->offset = section * (ecc->bytes + USER_DATA_SZ) + 4;
+       oobregion->offset = section * (ecc->bytes + USER_DATA_SZ) + USER_DATA_SZ;
        oobregion->length = ecc->bytes;
 
        return 0;