summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-02-05 15:27:24 +0100
committerMiquel Raynal <miquel.raynal@bootlin.com>2021-03-11 09:37:29 +0100
commitec9e0203a3598d979d6151703e673c8cb186304d (patch)
tree8f2a9e1ceb341da2c069616cb24cb14a1fd8d7dd
parent0646493edd02e4c872b37258e4e248eb9df4f25b (diff)
downloadlinux-stable-ec9e0203a3598d979d6151703e673c8cb186304d.tar.gz
linux-stable-ec9e0203a3598d979d6151703e673c8cb186304d.tar.bz2
linux-stable-ec9e0203a3598d979d6151703e673c8cb186304d.zip
mtd: nand: fix error handling in nand_prog_page_op() #1
On success chip->legacy.waitfunc() returns the NAND status byte, but on failure it returns a negative error code. This was never tested for and instead the return value was interpreted as NAND status without error checking. Add the missing error check. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20210205142725.13225-1-s.hauer@pengutronix.de
-rw-r--r--drivers/mtd/nand/raw/nand_base.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index 4e1bd1e5d474..878492fbb52a 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -1466,6 +1466,8 @@ int nand_prog_page_op(struct nand_chip *chip, unsigned int page,
chip->legacy.write_buf(chip, buf, len);
chip->legacy.cmdfunc(chip, NAND_CMD_PAGEPROG, -1, -1);
status = chip->legacy.waitfunc(chip);
+ if (status < 0)
+ return status;
}
if (status & NAND_STATUS_FAIL)