misc: at25: Unshadow error codes in at25_fw_to_chip()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 25 Nov 2021 21:31:55 +0000 (23:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Dec 2021 13:26:15 +0000 (14:26 +0100)
device_property_read_u32() may return different error codes.
Unshadow them in the at25_fw_to_chip() to give better error
report.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20211125213203.86693-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/eeprom/at25.c

index 6bea9c7..027840c 100644 (file)
@@ -304,33 +304,35 @@ static int at25_ee_write(void *priv, unsigned int off, void *val, size_t count)
 static int at25_fw_to_chip(struct device *dev, struct spi_eeprom *chip)
 {
        u32 val;
+       int err;
 
        memset(chip, 0, sizeof(*chip));
        strncpy(chip->name, "at25", sizeof(chip->name));
 
-       if (device_property_read_u32(dev, "size", &val) == 0 ||
-           device_property_read_u32(dev, "at25,byte-len", &val) == 0) {
-               chip->byte_len = val;
-       } else {
+       err = device_property_read_u32(dev, "size", &val);
+       if (err)
+               err = device_property_read_u32(dev, "at25,byte-len", &val);
+       if (err) {
                dev_err(dev, "Error: missing \"size\" property\n");
-               return -ENODEV;
+               return err;
        }
+       chip->byte_len = val;
 
-       if (device_property_read_u32(dev, "pagesize", &val) == 0 ||
-           device_property_read_u32(dev, "at25,page-size", &val) == 0) {
-               chip->page_size = val;
-       } else {
+       err = device_property_read_u32(dev, "pagesize", &val);
+       if (err)
+               err = device_property_read_u32(dev, "at25,page-size", &val);
+       if (err) {
                dev_err(dev, "Error: missing \"pagesize\" property\n");
-               return -ENODEV;
+               return err;
        }
-
-       if (device_property_read_u32(dev, "at25,addr-mode", &val) == 0) {
-               chip->flags = (u16)val;
-       } else {
-               if (device_property_read_u32(dev, "address-width", &val)) {
-                       dev_err(dev,
-                               "Error: missing \"address-width\" property\n");
-                       return -ENODEV;
+       chip->page_size = val;
+
+       err = device_property_read_u32(dev, "at25,addr-mode", &val);
+       if (err) {
+               err = device_property_read_u32(dev, "address-width", &val);
+               if (err) {
+                       dev_err(dev, "Error: missing \"address-width\" property\n");
+                       return err;
                }
                switch (val) {
                case 9:
@@ -353,6 +355,8 @@ static int at25_fw_to_chip(struct device *dev, struct spi_eeprom *chip)
                }
                if (device_property_present(dev, "read-only"))
                        chip->flags |= EE_READONLY;
+       } else {
+               chip->flags = (u16)val;
        }
        return 0;
 }