aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform
diff options
context:
space:
mode:
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>2009-08-29 10:28:30 +0200
committerLen Brown <len.brown@intel.com>2009-08-29 14:16:30 -0400
commita8258069793609903b5ebf0bca3320249154c379 (patch)
treecee48fe275ea8f34b36ac9c59b0c099deb6ec5ce /drivers/platform
parentbe96666065fd36ccfa09a13903d31d7ff5f4ef91 (diff)
downloadkernel_samsung_smdk4412-a8258069793609903b5ebf0bca3320249154c379.zip
kernel_samsung_smdk4412-a8258069793609903b5ebf0bca3320249154c379.tar.gz
kernel_samsung_smdk4412-a8258069793609903b5ebf0bca3320249154c379.tar.bz2
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 819c685..6f9a448 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)
eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7");
if (ehotk->wlan_rfkill) {
rfkill_unregister(ehotk->wlan_rfkill);
+ rfkill_destroy(ehotk->wlan_rfkill);
ehotk->wlan_rfkill = NULL;
}
/*
@@ -995,12 +996,21 @@ static void eeepc_rfkill_exit(void)
if (ehotk->hotplug_slot)
pci_hp_deregister(ehotk->hotplug_slot);
- if (ehotk->bluetooth_rfkill)
+ if (ehotk->bluetooth_rfkill) {
rfkill_unregister(ehotk->bluetooth_rfkill);
- if (ehotk->wwan3g_rfkill)
+ rfkill_destroy(ehotk->bluetooth_rfkill);
+ ehotk->bluetooth_rfkill = NULL;
+ }
+ if (ehotk->wwan3g_rfkill) {
rfkill_unregister(ehotk->wwan3g_rfkill);
- if (ehotk->wimax_rfkill)
+ rfkill_destroy(ehotk->wwan3g_rfkill);
+ ehotk->wwan3g_rfkill = NULL;
+ }
+ if (ehotk->wimax_rfkill) {
rfkill_unregister(ehotk->wimax_rfkill);
+ rfkill_destroy(ehotk->wimax_rfkill);
+ ehotk->wimax_rfkill = NULL;
+ }
}
static void eeepc_input_exit(void)