Message ID | 20200712192351.15428-1-trix@redhat.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | power: supply: check if calc_soc succeeded in pm860x_init_battery | expand |
Hi, On Sun, Jul 12, 2020 at 12:23:51PM -0700, trix@redhat.com wrote: > From: Tom Rix <trix@redhat.com> > > 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> > --- Thanks, queued. -- Sebastian > drivers/power/supply/88pm860x_battery.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/power/supply/88pm860x_battery.c b/drivers/power/supply/88pm860x_battery.c > index 1308f3a185f3..590da88a17a2 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.18.1 >
diff --git a/drivers/power/supply/88pm860x_battery.c b/drivers/power/supply/88pm860x_battery.c index 1308f3a185f3..590da88a17a2 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;