eeepc-laptop: fix rfkill memory leak on unload
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Sat, 29 Aug 2009 08:28:30 +0000 (10:28 +0200)
committerLen Brown <len.brown@intel.com>
Sat, 29 Aug 2009 18:16:30 +0000 (14:16 -0400)
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>
drivers/platform/x86/eeepc-laptop.c

index 819c685..6f9a448 100644 (file)
@@ -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)