mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
mtd: inftlcore: Add error check for inftl_read_oob()
In INFTL_findwriteunit(), the return value of inftl_read_oob() need to be checked. A proper implementation can be found in INFTL_deleteblock(). The status will be set as SECTOR_IGNORE to break from the while-loop correctly if the inftl_read_oob() fails. Fixes: 8593fbc68b0d ("[MTD] Rework the out of band handling completely") Cc: stable@vger.kernel.org # v2.6+ Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
This commit is contained in:
parent
36c6468724
commit
d027951dc8
@ -482,10 +482,11 @@ static inline u16 INFTL_findwriteunit(struct INFTLrecord *inftl, unsigned block)
|
||||
silly = MAX_LOOPS;
|
||||
|
||||
while (thisEUN <= inftl->lastEUN) {
|
||||
inftl_read_oob(mtd, (thisEUN * inftl->EraseSize) +
|
||||
blockofs, 8, &retlen, (char *)&bci);
|
||||
|
||||
status = bci.Status | bci.Status1;
|
||||
if (inftl_read_oob(mtd, (thisEUN * inftl->EraseSize) +
|
||||
blockofs, 8, &retlen, (char *)&bci) < 0)
|
||||
status = SECTOR_IGNORE;
|
||||
else
|
||||
status = bci.Status | bci.Status1;
|
||||
pr_debug("INFTL: status of block %d in EUN %d is %x\n",
|
||||
block , writeEUN, status);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user