dell-laptop: fix a use-after-free error on the failure path
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Wed, 19 Aug 2009 14:06:47 +0000 (15:06 +0100)
committerLen Brown <len.brown@intel.com>
Thu, 10 Dec 2009 04:59:19 +0000 (23:59 -0500)
dell_setup_rfkill() already cleans up the rfkill devices on failure.
So if it returns an error, we should not try to unregister the rfkill
devices.

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 906111152b035f20f455e9bd127e317423b6e3ab..d791ef93c1f070545bcc8cab0aa3895637fa629e 100644 (file)
@@ -330,7 +330,7 @@ static int __init dell_init(void)
 
        if (ret) {
                printk(KERN_WARNING "dell-laptop: Unable to setup rfkill\n");
-               goto out;
+               goto fail_rfkill;
        }
 
 #ifdef CONFIG_ACPI
@@ -358,7 +358,7 @@ static int __init dell_init(void)
                if (IS_ERR(dell_backlight_device)) {
                        ret = PTR_ERR(dell_backlight_device);
                        dell_backlight_device = NULL;
-                       goto out;
+                       goto fail_backlight;
                }
 
                dell_backlight_device->props.max_brightness = max_intensity;
@@ -368,13 +368,15 @@ static int __init dell_init(void)
        }
 
        return 0;
-out:
+
+fail_backlight:
        if (wifi_rfkill)
                rfkill_unregister(wifi_rfkill);
        if (bluetooth_rfkill)
                rfkill_unregister(bluetooth_rfkill);
        if (wwan_rfkill)
                rfkill_unregister(wwan_rfkill);
+fail_rfkill:
        kfree(da_tokens);
        return ret;
 }