aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform
diff options
context:
space:
mode:
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>2009-08-29 04:28:30 -0400
committerLen Brown <len.brown@intel.com>2009-08-29 14:16:30 -0400
commita8258069793609903b5ebf0bca3320249154c379 (patch)
treecee48fe275ea8f34b36ac9c59b0c099deb6ec5ce /drivers/platform
parentbe96666065fd36ccfa09a13903d31d7ff5f4ef91 (diff)
eeepc-laptop: fix rfkill memory leak on unload
rfkill_unregister() should always be followed by rfkill_destroy() Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk> Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/x86/eeepc-laptop.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index 819c685fe9cf..6f9a4489e199 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -985,6 +985,7 @@ static void eeepc_rfkill_exit(void)
985 eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); 985 eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7");
986 if (ehotk->wlan_rfkill) { 986 if (ehotk->wlan_rfkill) {
987 rfkill_unregister(ehotk->wlan_rfkill); 987 rfkill_unregister(ehotk->wlan_rfkill);
988 rfkill_destroy(ehotk->wlan_rfkill);
988 ehotk->wlan_rfkill = NULL; 989 ehotk->wlan_rfkill = NULL;
989 } 990 }
990 /* 991 /*
@@ -995,12 +996,21 @@ static void eeepc_rfkill_exit(void)
995 if (ehotk->hotplug_slot) 996 if (ehotk->hotplug_slot)
996 pci_hp_deregister(ehotk->hotplug_slot); 997 pci_hp_deregister(ehotk->hotplug_slot);
997 998
998 if (ehotk->bluetooth_rfkill) 999 if (ehotk->bluetooth_rfkill) {
999 rfkill_unregister(ehotk->bluetooth_rfkill); 1000 rfkill_unregister(ehotk->bluetooth_rfkill);
1000 if (ehotk->wwan3g_rfkill) 1001 rfkill_destroy(ehotk->bluetooth_rfkill);
1002 ehotk->bluetooth_rfkill = NULL;
1003 }
1004 if (ehotk->wwan3g_rfkill) {
1001 rfkill_unregister(ehotk->wwan3g_rfkill); 1005 rfkill_unregister(ehotk->wwan3g_rfkill);
1002 if (ehotk->wimax_rfkill) 1006 rfkill_destroy(ehotk->wwan3g_rfkill);
1007 ehotk->wwan3g_rfkill = NULL;
1008 }
1009 if (ehotk->wimax_rfkill) {
1003 rfkill_unregister(ehotk->wimax_rfkill); 1010 rfkill_unregister(ehotk->wimax_rfkill);
1011 rfkill_destroy(ehotk->wimax_rfkill);
1012 ehotk->wimax_rfkill = NULL;
1013 }
1004} 1014}
1005 1015
1006static void eeepc_input_exit(void) 1016static void eeepc_input_exit(void)