diff options
author | Devendra Naga <devendra.aaru@gmail.com> | 2014-12-05 20:34:27 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-01-18 00:14:16 (GMT) |
commit | 1f5cf8028dc472d5b5374c55b1399a8c294de58d (patch) | |
tree | 40bb86d098cf184ce7561ddfe78254c18b47e88b /drivers | |
parent | 25c048680b53c689ec918b3adfcfe62e1f03d4f0 (diff) | |
download | linux-1f5cf8028dc472d5b5374c55b1399a8c294de58d.tar.xz |
staging: mt29f_spinand: check for the return value of spinand_read_status
The spinan_read_status can fail, check for the return value and
fail if the spinand_read_status fails.
Cc: Kamlakant Patel <kamlakant.patel@broadcom.com>
Signed-off-by: Devendra Naga <devendra.aaru@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/mt29f_spinand/mt29f_spinand.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/staging/mt29f_spinand/mt29f_spinand.c b/drivers/staging/mt29f_spinand/mt29f_spinand.c index 3628bcb..3b191fc 100644 --- a/drivers/staging/mt29f_spinand/mt29f_spinand.c +++ b/drivers/staging/mt29f_spinand/mt29f_spinand.c @@ -626,7 +626,8 @@ static int spinand_write_page_hwecc(struct mtd_info *mtd, static int spinand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, uint8_t *buf, int oob_required, int page) { - u8 retval, status; + int retval; + u8 status; uint8_t *p = buf; int eccsize = chip->ecc.size; int eccsteps = chip->ecc.steps; @@ -640,6 +641,13 @@ static int spinand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, while (1) { retval = spinand_read_status(info->spi, &status); + if (retval < 0) { + dev_err(&mtd->dev, + "error %d reading status register\n", + retval); + return retval; + } + if ((status & STATUS_OIP_MASK) == STATUS_READY) { if ((status & STATUS_ECC_MASK) == STATUS_ECC_ERROR) { pr_info("spinand: ECC error\n"); @@ -685,6 +693,13 @@ static int spinand_wait(struct mtd_info *mtd, struct nand_chip *chip) while (time_before(jiffies, timeo)) { retval = spinand_read_status(info->spi, &status); + if (retval < 0) { + dev_err(&mtd->dev, + "error %d reading status register\n", + retval); + return retval; + } + if ((status & STATUS_OIP_MASK) == STATUS_READY) return 0; |