diff options
author | Doyle, Patrick <pdoyle@irobot.com> | 2020-07-15 14:46:34 +0000 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-08-04 23:30:02 -0400 |
commit | 06fc4573b9d0878dd1d3b302884601263fe6e85f (patch) | |
tree | 488d1a4fe6731aaa89bfb06b988bbdaec3b8426f /drivers/mtd/nand | |
parent | 4a4830cf915e76f07cff5ce346c3ccbc987c1557 (diff) | |
download | u-boot-06fc4573b9d0878dd1d3b302884601263fe6e85f.tar.gz |
Fix corner case in bad block table handling.
In the unlikely event that both blocks 10 and 11 are marked as bad (on a
32 bit machine), then the process of marking block 10 as bad stomps on
cached entry for block 11. There are (of course) other examples.
Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
Reviewed-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r-- | drivers/mtd/nand/bbt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mtd/nand/bbt.c b/drivers/mtd/nand/bbt.c index 84d60b8652..294daee7b2 100644 --- a/drivers/mtd/nand/bbt.c +++ b/drivers/mtd/nand/bbt.c @@ -127,7 +127,7 @@ int nanddev_bbt_set_block_status(struct nand_device *nand, unsigned int entry, unsigned int rbits = bits_per_block + offs - BITS_PER_LONG; pos[1] &= ~GENMASK(rbits - 1, 0); - pos[1] |= val >> rbits; + pos[1] |= val >> (bits_per_block - rbits); } return 0; |