aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2011-10-31 20:43:11 -0400
committerAnton Vorontsov <cbouatmailru@gmail.com>2011-11-25 15:03:44 -0500
commit8cfaaa811894a3ae2d7360a15a6cfccff3ebc7db (patch)
treede05bfaa8a687daf431827a10548f9e9797c1569 /drivers/power
parentc6cd4f267d442f2ce279024adb03a69e8608e0f6 (diff)
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.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index 82ab6ca45f58..98bf5676318d 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)
598 598
599static void bq27x00_powersupply_unregister(struct bq27x00_device_info *di) 599static void bq27x00_powersupply_unregister(struct bq27x00_device_info *di)
600{ 600{
601 /*
602 * power_supply_unregister call bq27x00_battery_get_property which
603 * call bq27x00_battery_poll.
604 * Make sure that bq27x00_battery_poll will not call
605 * schedule_delayed_work again after unregister (which cause OOPS).
606 */
607 poll_interval = 0;
608
601 cancel_delayed_work_sync(&di->work); 609 cancel_delayed_work_sync(&di->work);
602 610
603 power_supply_unregister(&di->bat); 611 power_supply_unregister(&di->bat);