Reference: http://lwn.net/Articles/211279/ http://blog.chinaunix.net/space.php?uid=14163325&do=blog&cuid=1388772 http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commitdiff;h=afe2c511fb2d75f1515081ff1be15bd79cfe722d --- lyn/drivers/platform/mips/gdium_laptop.c.orig 2011-12-14 08:45:26.417605630 +0800 +++ lyn/drivers/platform/mips/gdium_laptop.c 2011-12-14 08:46:54.773603078 +0800 @@ -745,7 +745,7 @@ static void gdium_laptop_battery_exit(struct gdium_laptop_data *data) { if (!ec) { - cancel_rearming_delayed_workqueue(data->workqueue, &data->work); + cancel_delayed_work_sync(&data->work); destroy_workqueue(data->workqueue); } power_supply_unregister(&data->gdium_battery); @@ -874,7 +874,7 @@ struct gdium_laptop_data *data = i2c_get_clientdata(client); if (!ec) - cancel_rearming_delayed_workqueue(data->workqueue, &data->work); + cancel_delayed_work_sync(&data->work); return 0; }