Commit 868801e5 authored by Todd Poynor's avatar Todd Poynor Committed by Thomas Gleixner

[MTD] NAND: nand_write_ecc memory and OOB corruption

Nathan Roberts noticed the nand_write_ecc index into oobbuf goes out of
bounds when crossing an erase block boundary, causing incorrect OOB data
to be written and corrupting memory.  Reset the index to zero after
re-preparing oobbuf for a new erase block.
Signed-off-by: default avatarTodd Poynor <tpoynor@mvista.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 49196f33
...@@ -1722,6 +1722,7 @@ static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len, ...@@ -1722,6 +1722,7 @@ static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
startpage = page; startpage = page;
oobbuf = nand_prepare_oobbuf (mtd, eccbuf, oobsel, oobbuf = nand_prepare_oobbuf (mtd, eccbuf, oobsel,
autoplace, numpages); autoplace, numpages);
oob = 0;
/* Check, if we cross a chip boundary */ /* Check, if we cross a chip boundary */
if (!page) { if (!page) {
chipnr++; chipnr++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment