On Tue, 2020-02-18 at 10:05:14 UTC, Schrempf Frieder wrote: > From: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > > For reading and writing the bad block markers, spinand->oobbuf is > currently used as a buffer for the marker bytes. During the > underlying read and write operations to actually get/set the content > of the OOB area, the content of spinand->oobbuf is reused and changed > by accessing it through spinand->oobbuf and/or spinand->databuf. > > This is a flaw in the original design of the SPI NAND core and at the > latest from 13c15e07eedf ("mtd: spinand: Handle the case where > PROGRAM LOAD does not reset the cache") on, it results in not having > the bad block marker written at all, as the spinand->oobbuf is > cleared to 0xff after setting the marker bytes to zero. > > To fix it, we now just store the two bytes for the marker on the > stack and let the read/write operations copy it from/to the page > buffer later. > > Fixes: 7529df465248 ("mtd: nand: Add core infrastructure to support SPI NANDs") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel