staging: mt29f_spinand: check for the return value of spinand_read_status
authorDevendra Naga <devendra.aaru@gmail.com>
Fri, 5 Dec 2014 20:34:27 +0000 (15:34 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 Jan 2015 00:14:16 +0000 (16:14 -0800)
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>
drivers/staging/mt29f_spinand/mt29f_spinand.c

index 3628bcb840c3c6d8f5bdfdefcd77958b2b0fd3e9..3b191fce45ec912d318c45892db0bdd09443ab20 100644 (file)
@@ -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;