The device_property_read_u8_array() call should not fail because it is
preceded with device_property_count_u8() and check for number of
readable u8 values.  However the code is more obvious and easier to read
if the return value of device_property_read_u8_array() is checked.
Otherwise reader needs to investigate whether really there is no risk of
using random stack values of 'rcomp' variable.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlow...@canonical.com>
---
 drivers/power/supply/max17040_battery.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/power/supply/max17040_battery.c 
b/drivers/power/supply/max17040_battery.c
index d956c67d5155..d2053cd0bd13 100644
--- a/drivers/power/supply/max17040_battery.c
+++ b/drivers/power/supply/max17040_battery.c
@@ -268,11 +268,10 @@ static int max17040_get_of_data(struct max17040_chip 
*chip)
        rcomp_len = device_property_count_u8(dev, "maxim,rcomp");
        chip->rcomp = MAX17040_RCOMP_DEFAULT;
        if (rcomp_len == data->rcomp_bytes) {
-               device_property_read_u8_array(dev, "maxim,rcomp",
-                                             rcomp, rcomp_len);
-               chip->rcomp = rcomp_len == 2 ?
-                       rcomp[0] << 8 | rcomp[1] :
-                       rcomp[0] << 8;
+               if (!device_property_read_u8_array(dev, "maxim,rcomp",
+                                                  rcomp, rcomp_len))
+                       chip->rcomp = rcomp_len == 2 ? rcomp[0] << 8 | rcomp[1] 
:
+                                     rcomp[0] << 8;
        } else if (rcomp_len > 0) {
                dev_err(dev, "maxim,rcomp has incorrect length\n");
                return -EINVAL;
-- 
2.25.1

Reply via email to