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;
 }
 

