Skip to content

Commit

Permalink
power_supply: 88pm860x_charger: Fix possible NULL pointer dereference…
Browse files Browse the repository at this point in the history
… and use of initialized variable

Do not put reference to power supply in early exit paths of
pm860x_done_handler() because:
1. it is not yet initialized,
2. it is NULL.

This fixes possible NULL pointer dereference and following build
warning:
drivers/power/88pm860x_charger.c: In function ‘pm860x_done_handler’:
drivers/power/88pm860x_charger.c:516:18: warning: ‘psy’ may be used uninitialized in this function [-Wmaybe-uninitialized]

Additionally this puts the power supply reference before unlocking
mutex. This actually is not needed (there is no race here) but has
logical sense and makes the exit paths cleaner.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
  • Loading branch information
Krzysztof Kozlowski authored and Sebastian Reichel committed Mar 20, 2015
1 parent d3a6097 commit c94a3d4
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/power/88pm860x_charger.c
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ static irqreturn_t pm860x_done_handler(int irq, void *data)
ret = power_supply_get_property(psy, POWER_SUPPLY_PROP_VOLTAGE_NOW,
&val);
if (ret)
goto out;
goto out_psy_put;
vbatt = val.intval / 1000;
/*
* CHG_DONE interrupt is faster than CHG_DET interrupt when
Expand All @@ -506,14 +506,15 @@ static irqreturn_t pm860x_done_handler(int irq, void *data)
*/
ret = pm860x_reg_read(info->i2c, PM8607_STATUS_2);
if (ret < 0)
goto out;
goto out_psy_put;
if (vbatt > CHARGE_THRESHOLD && ret & STATUS2_CHG)
power_supply_set_property(psy, POWER_SUPPLY_PROP_CHARGE_FULL,
&val);

out_psy_put:
power_supply_put(psy);
out:
mutex_unlock(&info->lock);
power_supply_put(psy);
dev_dbg(info->dev, "%s, Allowed: %d\n", __func__, info->allowed);
set_charging_fsm(info);

Expand Down

0 comments on commit c94a3d4

Please sign in to comment.