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 <tr...@konsulko.com>
Signed-off-by: Fabio Estevam <fabio.este...@freescale.com>
---
 drivers/mtd/spi/sf_ops.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c
index 384224d..6cc2d31 100644
--- a/drivers/mtd/spi/sf_ops.c
+++ b/drivers/mtd/spi/sf_ops.c
@@ -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)
+               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)
+               return ret;
 
        /* Cannot unlock; would unlock larger region than requested */
        if (stm_is_locked_sr(flash, status_old, ofs - flash->erase_size,
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to