diff options
author | Pali Rohár <pali.rohar@gmail.com> | 2011-11-01 00:43:11 (GMT) |
---|---|---|
committer | Anton Vorontsov <cbouatmailru@gmail.com> | 2011-11-25 20:03:44 (GMT) |
commit | 8cfaaa811894a3ae2d7360a15a6cfccff3ebc7db (patch) | |
tree | de05bfaa8a687daf431827a10548f9e9797c1569 /drivers/power | |
parent | c6cd4f267d442f2ce279024adb03a69e8608e0f6 (diff) | |
download | linux-8cfaaa811894a3ae2d7360a15a6cfccff3ebc7db.tar.xz |
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>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/bq27x00_battery.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c index 82ab6ca..98bf567 100644 --- a/drivers/power/bq27x00_battery.c +++ b/drivers/power/bq27x00_battery.c @@ -598,6 +598,14 @@ static int bq27x00_powersupply_init(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); power_supply_unregister(&di->bat); |