summaryrefslogtreecommitdiff
path: root/drivers/staging/mt29f_spinand
diff options
context:
space:
mode:
authorDevendra Naga <devendra.aaru@gmail.com>2014-12-05 15:34:27 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-17 16:14:16 -0800
commit1f5cf8028dc472d5b5374c55b1399a8c294de58d (patch)
tree40bb86d098cf184ce7561ddfe78254c18b47e88b /drivers/staging/mt29f_spinand
parent25c048680b53c689ec918b3adfcfe62e1f03d4f0 (diff)
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/staging/mt29f_spinand')
-rw-r--r--drivers/staging/mt29f_spinand/mt29f_spinand.c17
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 3628bcb840c3..3b191fce45ec 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;