power: supply: bq27xxx: Use devm to free device mutex
Use a device lifecycle managed action to free the device mutex. This helps prevent mistakes like freeing out of order in cleanup functions and forgetting to free on error paths. Signed-off-by: Andrew Davis <afd@ti.com> Link: https://lore.kernel.org/r/20240123150914.308510-3-afd@ti.com Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
73697f0acc
commit
f2d506d9fe
@ -2101,6 +2101,13 @@ static void bq27xxx_external_power_changed(struct power_supply *psy)
|
||||
mod_delayed_work(system_wq, &di->work, HZ / 2);
|
||||
}
|
||||
|
||||
static void bq27xxx_battery_mutex_destroy(void *data)
|
||||
{
|
||||
struct mutex *lock = data;
|
||||
|
||||
mutex_destroy(lock);
|
||||
}
|
||||
|
||||
int bq27xxx_battery_setup(struct bq27xxx_device_info *di)
|
||||
{
|
||||
struct power_supply_desc *psy_desc;
|
||||
@ -2108,9 +2115,14 @@ int bq27xxx_battery_setup(struct bq27xxx_device_info *di)
|
||||
.of_node = di->dev->of_node,
|
||||
.drv_data = di,
|
||||
};
|
||||
int ret;
|
||||
|
||||
INIT_DELAYED_WORK(&di->work, bq27xxx_battery_poll);
|
||||
mutex_init(&di->lock);
|
||||
ret = devm_add_action_or_reset(di->dev, bq27xxx_battery_mutex_destroy,
|
||||
&di->lock);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
di->regs = bq27xxx_chip_data[di->chip].regs;
|
||||
di->unseal_key = bq27xxx_chip_data[di->chip].unseal_key;
|
||||
@ -2158,7 +2170,6 @@ void bq27xxx_battery_teardown(struct bq27xxx_device_info *di)
|
||||
cancel_delayed_work_sync(&di->work);
|
||||
|
||||
power_supply_unregister(di->bat);
|
||||
mutex_destroy(&di->lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bq27xxx_battery_teardown);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user