Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] mtd_dataflash, fix block vs page erase

Fix a bug in the block-erase optimization for Dataflash; it was using block
erase even for smaller segments that need page erase.

That wouldn't matter for JFFS2, which never erases less than one block
(sometimes several blocks), but for other callers it might.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

David Brownell and committed by
Linus Torvalds
3cb4f09f 3759fa9c

+1 -1
+1 -1
drivers/mtd/devices/mtd_dataflash.c
··· 178 178 * we're at a block boundary and need to erase the whole block. 179 179 */ 180 180 pageaddr = instr->addr / priv->page_size; 181 - do_block = (pageaddr & 0x7) == 0 && instr->len <= blocksize; 181 + do_block = (pageaddr & 0x7) == 0 && instr->len >= blocksize; 182 182 pageaddr = pageaddr << priv->page_offset; 183 183 184 184 command[0] = do_block ? OP_ERASE_BLOCK : OP_ERASE_PAGE;