spi: sf_ops: Check the return value from spi_flash_cmd_read_status()
authorFabio Estevam <fabio.estevam@freescale.com>
Tue, 17 Nov 2015 19:13:33 +0000 (17:13 -0200)
committerJagan Teki <jteki@openedev.com>
Tue, 17 Nov 2015 19:25:29 +0000 (00:55 +0530)
We should check the return value from spi_flash_cmd_read_status() and
propagate it in the case of error.

This fixes a defect caught by Coverity.

Reported-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
drivers/mtd/spi/sf_ops.c

index 4065520726dc449b1052a2181873071314e2c2e5..3a56d7f55c80d998397a0468b5d216443013e0fa 100644 (file)
@@ -663,8 +663,11 @@ int stm_lock(struct spi_flash *flash, u32 ofs, size_t len)
        u8 status_old, status_new;
        u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
        u8 shift = ffs(mask) - 1, pow, val;
+       int ret;
 
-       spi_flash_cmd_read_status(flash, &status_old);
+       ret = spi_flash_cmd_read_status(flash, &status_old);
+       if (ret < 0)
+               return ret;
 
        /* SPI NOR always locks to the end */
        if (ofs + len != flash->size) {
@@ -714,8 +717,11 @@ int stm_unlock(struct spi_flash *flash, u32 ofs, size_t len)
        uint8_t status_old, status_new;
        u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
        u8 shift = ffs(mask) - 1, pow, val;
+       int ret;
 
-       spi_flash_cmd_read_status(flash, &status_old);
+       ret = spi_flash_cmd_read_status(flash, &status_old);
+       if (ret < 0)
+               return ret;
 
        /* Cannot unlock; would unlock larger region than requested */
        if (stm_is_locked_sr(flash, status_old, ofs - flash->erase_size,