forked from Minki/linux
bq27x00_battery: Fix OOPS caused by unregistring bq27x00 driver
* power_supply_unregister call bq27x00_battery_get_property which call bq27x00_battery_poll * make sure that bq27x00_battery_poll will not call schedule_delayed_work again after unregister (which cause OOPS) Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
This commit is contained in:
parent
c6cd4f267d
commit
8cfaaa8118
@ -598,6 +598,14 @@ static int bq27x00_powersupply_init(struct bq27x00_device_info *di)
|
|||||||
|
|
||||||
static void bq27x00_powersupply_unregister(struct bq27x00_device_info *di)
|
static void bq27x00_powersupply_unregister(struct bq27x00_device_info *di)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* power_supply_unregister call bq27x00_battery_get_property which
|
||||||
|
* call bq27x00_battery_poll.
|
||||||
|
* Make sure that bq27x00_battery_poll will not call
|
||||||
|
* schedule_delayed_work again after unregister (which cause OOPS).
|
||||||
|
*/
|
||||||
|
poll_interval = 0;
|
||||||
|
|
||||||
cancel_delayed_work_sync(&di->work);
|
cancel_delayed_work_sync(&di->work);
|
||||||
|
|
||||||
power_supply_unregister(&di->bat);
|
power_supply_unregister(&di->bat);
|
||||||
|
Loading…
Reference in New Issue
Block a user