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

[MTD] NAND: Fix nand_default_mark_blockbad() when flash-based BBT disabled

When a flash-based BBT is not used, nand_default_mark_blockbad() is supposed
to mark the block bad in the oob. However, it sets the wrong length variable
so that no bad block marker is in fact written. This patch attempts to
rectify that.

(As note, it seems to be that logically, it shouldn't be necessary to set
both length variables, as one appears to be for the main buffer, and
one for the oob buffer, but this is how it is done in several places,
including the code for the mtd character device MEMWRITEOOB and MEMREADOOB
ioctls. I'm not sure if this is a temporary solution during some rework of
the mtd infrastructure, or whether there is a deeper thought here.)

Signed-off-by: Ricard Wanderlöf <ricardw@axis.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>

authored by

Ricard Wanderlöf and committed by
David Woodhouse
ff0dab64 784f4d5e

+1 -1
+1 -1
drivers/mtd/nand/nand_base.c
··· 362 362 * access 363 363 */ 364 364 ofs += mtd->oobsize; 365 - chip->ops.len = 2; 365 + chip->ops.len = chip->ops.ooblen = 2; 366 366 chip->ops.datbuf = NULL; 367 367 chip->ops.oobbuf = buf; 368 368 chip->ops.ooboffs = chip->badblockpos & ~0x01;