| From b195566fd6c70cb87146ed0baaf755ab42fd3f2c Mon Sep 17 00:00:00 2001 |
| From: Tom Rix <trix@redhat.com> |
| Date: Sun, 12 Jul 2020 12:23:51 -0700 |
| Subject: [PATCH] power: supply: check if calc_soc succeeded in |
| pm860x_init_battery |
| |
| commit ccf193dee1f0fff55b556928591f7818bac1b3b1 upstream. |
| |
| clang static analysis flags this error |
| |
| 88pm860x_battery.c:522:19: warning: Assigned value is |
| garbage or undefined [core.uninitialized.Assign] |
| info->start_soc = soc; |
| ^ ~~~ |
| soc is set by calling calc_soc. |
| But calc_soc can return without setting soc. |
| |
| So check the return status and bail similarly to other |
| checks in pm860x_init_battery and initialize soc to |
| silence the warning. |
| |
| Fixes: a830d28b48bf ("power_supply: Enable battery-charger for 88pm860x") |
| |
| Signed-off-by: Tom Rix <trix@redhat.com> |
| Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/power/supply/88pm860x_battery.c b/drivers/power/supply/88pm860x_battery.c |
| index 5ca047b3f58f..23e7d6447ae9 100644 |
| --- a/drivers/power/supply/88pm860x_battery.c |
| +++ b/drivers/power/supply/88pm860x_battery.c |
| @@ -433,7 +433,7 @@ static void pm860x_init_battery(struct pm860x_battery_info *info) |
| int ret; |
| int data; |
| int bat_remove; |
| - int soc; |
| + int soc = 0; |
| |
| /* measure enable on GPADC1 */ |
| data = MEAS1_GP1; |
| @@ -496,7 +496,9 @@ static void pm860x_init_battery(struct pm860x_battery_info *info) |
| } |
| mutex_unlock(&info->lock); |
| |
| - calc_soc(info, OCV_MODE_ACTIVE, &soc); |
| + ret = calc_soc(info, OCV_MODE_ACTIVE, &soc); |
| + if (ret < 0) |
| + goto out; |
| |
| data = pm860x_reg_read(info->i2c, PM8607_POWER_UP_LOG); |
| bat_remove = data & BAT_WU_LOG; |
| -- |
| 2.27.0 |
| |