[PATCH] mtd corruption fix
Read the return value before we release the nand device otherwise the value can become corrupted by another user of chip->ops, ultimately resulting in filesystem corruption. Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Cc: David Woodhouse <dwmw2@infradead.org> Acked-by: Josh Boyer <jwboyer@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
6946bd6363
commit
7fd5aecc5d
1 changed files with 4 additions and 2 deletions
|
@ -1093,9 +1093,10 @@ static int nand_read(struct mtd_info *mtd, loff_t from, size_t len,
|
||||||
|
|
||||||
ret = nand_do_read_ops(mtd, from, &chip->ops);
|
ret = nand_do_read_ops(mtd, from, &chip->ops);
|
||||||
|
|
||||||
|
*retlen = chip->ops.retlen;
|
||||||
|
|
||||||
nand_release_device(mtd);
|
nand_release_device(mtd);
|
||||||
|
|
||||||
*retlen = chip->ops.retlen;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1691,9 +1692,10 @@ static int nand_write(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
|
|
||||||
ret = nand_do_write_ops(mtd, to, &chip->ops);
|
ret = nand_do_write_ops(mtd, to, &chip->ops);
|
||||||
|
|
||||||
|
*retlen = chip->ops.retlen;
|
||||||
|
|
||||||
nand_release_device(mtd);
|
nand_release_device(mtd);
|
||||||
|
|
||||||
*retlen = chip->ops.retlen;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue