Skip to content

Commit

Permalink
power: supply: bq25890: Ensure pump_express_work is cancelled on remove
Browse files Browse the repository at this point in the history
[ Upstream commit a7aaa80 ]

The pump_express_work which gets queued from an external_power_changed
callback might be pending / running on remove() (or on probe failure).

Add a devm action cancelling the work, to ensure that it is cancelled.

Note the devm action is added before devm_power_supply_register(), making
it run after devm unregisters the power_supply, so that the work cannot
be queued anymore (this is also why a devm action is used for this).

Fixes: 48f45b0 ("power: supply: bq25890: Support higher charging voltages through Pump Express+ protocol")
Reviewed-by: Marek Vasut <marex@denx.de>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
jwrdegoede authored and gregkh committed Dec 31, 2022
1 parent 81b0e5d commit 6424511
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions drivers/power/supply/bq25890_charger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1219,6 +1219,13 @@ static int bq25890_fw_probe(struct bq25890_device *bq)
return 0;
}

static void bq25890_non_devm_cleanup(void *data)
{
struct bq25890_device *bq = data;

cancel_delayed_work_sync(&bq->pump_express_work);
}

static int bq25890_probe(struct i2c_client *client)
{
struct device *dev = &client->dev;
Expand Down Expand Up @@ -1274,6 +1281,14 @@ static int bq25890_probe(struct i2c_client *client)
/* OTG reporting */
bq->usb_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2);

/*
* This must be before bq25890_power_supply_init(), so that it runs
* after devm unregisters the power_supply.
*/
ret = devm_add_action_or_reset(dev, bq25890_non_devm_cleanup, bq);
if (ret)
return ret;

ret = bq25890_register_regulator(bq);
if (ret)
return ret;
Expand Down

0 comments on commit 6424511

Please sign in to comment.