mtd_dataflash bug

Tobias Simon tobias.simon at sp-ss.de
Tue May 12 21:15:36 EDT 2009


Hello List,

i have figured out a bug in mtd_datflash.c of kernel 2.6.29, which 
causes my ARM bootloader to be killed with every "erase" operation on 
arbitrary adresses. The fix is:

--- linux-2.6.29.2-a/drivers/mtd/devices/mtd_dataflash.c  2009-05-13 
03:11:16.000000000 +0200
+++ linux-2.6.29.2-b/drivers/mtd/devices/mtd_dataflash.c     2009-05-13 
03:13:30.000000000 +0200
@@ -184,7 +184,7 @@
                /* Calculate flash page address; use block erase (for 
speed) if
                 * we're at a block boundary and need to erase the whole 
block.
                 */
-               pageaddr = div_u64(instr->len, priv->page_size);
+               pageaddr = div_u64(instr->addr, priv->page_size);
                do_block = (pageaddr & 0x7) == 0 && instr->len >= blocksize;
                pageaddr = pageaddr << priv->page_offset;

Regards,
Tobias



More information about the linux-mtd mailing list