[MTD] [NAND] Wrong calculation of page number in nand_block_bad()
authorKnobloch, Thomas <knobloch@siemens.com>
Fri, 27 Apr 2007 11:19:36 +0000 (13:19 +0200)
committerDavid Woodhouse <dwmw2@infradead.org>
Fri, 27 Apr 2007 14:13:53 +0000 (15:13 +0100)
In case that there is no memory based bad block table available the
function nand_block_checkbad() in drivers/mtd/nand/nand_base.c will call
nand_block_bad() directly. When parameter 'getchip' is set to zero,
nand_block_bad() will not right shift the offset to calculate the
correct page number.

Signed-off-by: Thomas Knobloch <knobloch@siemens.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
drivers/mtd/nand/nand_base.c

index ab3b2d16cffe5ede269b143743bf71da7dd20f10..04de315e4937c0e650025983b4364ad647c69dac 100644 (file)
@@ -312,7 +312,7 @@ static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
                /* Select the NAND device */
                chip->select_chip(mtd, chipnr);
        } else
-               page = (int)ofs;
+               page = (int)(ofs >> chip->page_shift);
 
        if (chip->options & NAND_BUSWIDTH_16) {
                chip->cmdfunc(mtd, NAND_CMD_READOOB, chip->badblockpos & 0xFE,