Commit 4226b510 authored by Andre Renaud's avatar Andre Renaud Committed by David Woodhouse

[MTD] [NAND] Casting bug in nand_default_block_markbad

There is a slight bug in nand_default_block_markbad, where the offset is
cast to an integer, prior to being shifted. This means that on large
offsets, it is incorrectly doing a signed shift & losing bits. Fixed
this by doing the cast after the shift (as is done elsewhere in the code).
Signed-off-by: default avatarAndre Renaud <andre@bluewatersys.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent 340ea370
...@@ -350,7 +350,7 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs) ...@@ -350,7 +350,7 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
int block, ret; int block, ret;
/* Get block number */ /* Get block number */
block = ((int)ofs) >> chip->bbt_erase_shift; block = (int)(ofs >> chip->bbt_erase_shift);
if (chip->bbt) if (chip->bbt)
chip->bbt[block >> 2] |= 0x01 << ((block & 0x03) << 1); chip->bbt[block >> 2] |= 0x01 << ((block & 0x03) << 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment