]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
power: supply: max17040: handle device_property_read_u8_array() failure
authorKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Mon, 19 Apr 2021 16:33:33 +0000 (18:33 +0200)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Tue, 20 Apr 2021 14:18:08 +0000 (16:18 +0200)
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.kozlowski@canonical.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/max17040_battery.c

index d956c67d515586eef043625f1e7dc96807da58f3..d2053cd0bd131a90cfd612f5e34ae5b2dbb5ca8f 100644 (file)
@@ -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;