dell-laptop: fix rfkill memory leak on unload and failure paths
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Wed, 19 Aug 2009 14:06:48 +0000 (15:06 +0100)
committerLen Brown <len.brown@intel.com>
Thu, 10 Dec 2009 05:01:03 +0000 (00:01 -0500)
rfkill_unregister() should always be followed by rfkill_destroy().

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Acked-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/platform/x86/dell-laptop.c

index d791ef93c1f070545bcc8cab0aa3895637fa629e..94139d530c7552928cad62487c7a9543d68e71ab 100644 (file)
@@ -268,6 +268,22 @@ err_wifi:
        return ret;
 }
 
+static void dell_cleanup_rfkill(void)
+{
+       if (wifi_rfkill) {
+               rfkill_unregister(wifi_rfkill);
+               rfkill_destroy(wifi_rfkill);
+       }
+       if (bluetooth_rfkill) {
+               rfkill_unregister(bluetooth_rfkill);
+               rfkill_destroy(bluetooth_rfkill);
+       }
+       if (wwan_rfkill) {
+               rfkill_unregister(wwan_rfkill);
+               rfkill_destroy(wwan_rfkill);
+       }
+}
+
 static int dell_send_intensity(struct backlight_device *bd)
 {
        struct calling_interface_buffer buffer;
@@ -370,12 +386,7 @@ static int __init dell_init(void)
        return 0;
 
 fail_backlight:
-       if (wifi_rfkill)
-               rfkill_unregister(wifi_rfkill);
-       if (bluetooth_rfkill)
-               rfkill_unregister(bluetooth_rfkill);
-       if (wwan_rfkill)
-               rfkill_unregister(wwan_rfkill);
+       dell_cleanup_rfkill();
 fail_rfkill:
        kfree(da_tokens);
        return ret;
@@ -384,12 +395,7 @@ fail_rfkill:
 static void __exit dell_exit(void)
 {
        backlight_device_unregister(dell_backlight_device);
-       if (wifi_rfkill)
-               rfkill_unregister(wifi_rfkill);
-       if (bluetooth_rfkill)
-               rfkill_unregister(bluetooth_rfkill);
-       if (wwan_rfkill)
-               rfkill_unregister(wwan_rfkill);
+       dell_cleanup_rfkill();
 }
 
 module_init(dell_init);
This page took 0.027703 seconds and 5 git commands to generate.