summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavid regan <dregan@broadcom.com>2024-11-26 05:39:16 +0300
committerMiquel Raynal <miquel.raynal@bootlin.com>2024-12-24 15:12:09 +0300
commit03271ea36ea7a58d30a4bde182eb2a0d46220467 (patch)
tree560d7ccc17f61d48d0b7e0c092bd374ba1bf460e
parent1a50e3612de9187857f55ee14a573f7f8e7d4ebc (diff)
downloadlinux-03271ea36ea7a58d30a4bde182eb2a0d46220467.tar.xz
mtd: rawnand: brcmnand: fix status read of brcmnand_waitfunc
This change fixes an issue where an error return value may be mistakenly used as NAND status. Fixes: f504551b7f15 ("mtd: rawnand: Propagate error and simplify ternary operators for brcmstb_nand_wait_for_completion()") Signed-off-by: david regan <dregan@broadcom.com> Reviewed-by: William Zhang <william.zhang@broadcom.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-rw-r--r--drivers/mtd/nand/raw/brcmnand/brcmnand.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
index 9c253a511e45..fea5b6119956 100644
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
@@ -2342,6 +2342,11 @@ static int brcmnand_write(struct mtd_info *mtd, struct nand_chip *chip,
brcmnand_send_cmd(host, CMD_PROGRAM_PAGE);
status = brcmnand_waitfunc(chip);
+ if (status < 0) {
+ ret = status;
+ goto out;
+ }
+
if (status & NAND_STATUS_FAIL) {
dev_info(ctrl->dev, "program failed at %llx\n",
(unsigned long long)addr);