Don't overwrite the errno from spi_nor_read_raw().

Signed-off-by: Tudor Ambarus <tudor.amba...@microchip.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index bd1866d714f2..79ca1102faed 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2861,11 +2861,13 @@ static u8 spi_nor_smpt_read_dummy(const struct spi_nor 
*nor, const u32 settings)
  * @nor:       pointer to a 'struct spi_nor'
  * @smpt:      pointer to the sector map parameter table
  * @smpt_len:  sector map parameter table length
+ *
+ * Return: pointer to the map in use, ERR_PTR(-errno) otherwise.
  */
 static const u32 *spi_nor_get_map_in_use(struct spi_nor *nor, const u32 *smpt,
                                         u8 smpt_len)
 {
-       const u32 *ret = NULL;
+       const u32 *ret;
        u32 addr;
        int err;
        u8 i, ncmds, nmaps;
@@ -2889,8 +2891,10 @@ static const u32 *spi_nor_get_map_in_use(struct spi_nor 
*nor, const u32 *smpt,
                addr = smpt[i + 1];
 
                err = spi_nor_read_raw(nor, addr, 1, &data_byte);
-               if (err)
+               if (err) {
+                       ret = ERR_PTR(err);
                        goto out;
+               }
 
                /*
                 * Build an index value that is used to select the Sector Map
@@ -2907,6 +2911,7 @@ static const u32 *spi_nor_get_map_in_use(struct spi_nor 
*nor, const u32 *smpt,
         *
         * Find the matching configuration map.
         */
+       ret = ERR_PTR(-EINVAL);
        for (nmaps = 0; i < smpt_len; nmaps++) {
                /*
                 * The map selector is limited to a maximum of 8 bits, allowing
@@ -3056,8 +3061,8 @@ static int spi_nor_parse_smpt(struct spi_nor *nor,
                smpt[i] = le32_to_cpu(smpt[i]);
 
        sector_map = spi_nor_get_map_in_use(nor, smpt, smpt_header->length);
-       if (!sector_map) {
-               ret = -EINVAL;
+       if (IS_ERR(sector_map)) {
+               ret = PTR_ERR(sector_map);
                goto out;
        }
 
-- 
2.9.4

Reply via email to