power: supply: max17040: handle device_property_read_u8_array() failure

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>
This commit is contained in:
Krzysztof Kozlowski 2021-04-19 18:33:33 +02:00 committed by Sebastian Reichel
parent 01dcfe7849
commit a837f35c5a

View 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;