hp-wmi: handle rfkill_register() failure
authorLarry Finger <Larry.Finger@lwfinger.net>
Sat, 10 Jan 2009 00:40:54 +0000 (16:40 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 10 Jan 2009 00:54:41 +0000 (16:54 -0800)
Compilation of the HP WMI hotkeys code results in the following:

  CC [M]  drivers/platform/x86/hp-wmi.o
drivers/platform/x86/hp-wmi.c: In function hp_wmi_bios_setup:
drivers/platform/x86/hp-wmi.c:431: warning: ignoring return value of rfkill_register,
 declared with attribute warn_unused_result
drivers/platform/x86/hp-wmi.c:441: warning: ignoring return value of rfkill_register,
 declared with attribute warn_unused_result
drivers/platform/x86/hp-wmi.c:450: warning: ignoring return value of rfkill_register,
 declared with attribute warn_unused_result

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/platform/x86/hp-wmi.c

index 4b7c24c519c34cba280c13bf4667e23051bca741..7c789f0a94d71333be04a71ae0bf7e5ef64d0169 100644 (file)
@@ -428,7 +428,9 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
                wifi_rfkill->state = hp_wmi_wifi_state();
                wifi_rfkill->toggle_radio = hp_wmi_wifi_set;
                wifi_rfkill->user_claim_unsupported = 1;
-               rfkill_register(wifi_rfkill);
+               err = rfkill_register(wifi_rfkill);
+               if (err)
+                       goto add_sysfs_error;
        }
 
        if (wireless & 0x2) {
@@ -438,7 +440,8 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
                bluetooth_rfkill->state = hp_wmi_bluetooth_state();
                bluetooth_rfkill->toggle_radio = hp_wmi_bluetooth_set;
                bluetooth_rfkill->user_claim_unsupported = 1;
-               rfkill_register(bluetooth_rfkill);
+               err = rfkill_register(bluetooth_rfkill);
+                       goto register_bluetooth_error;
        }
 
        if (wireless & 0x4) {
@@ -447,10 +450,16 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
                wwan_rfkill->state = hp_wmi_wwan_state();
                wwan_rfkill->toggle_radio = hp_wmi_wwan_set;
                wwan_rfkill->user_claim_unsupported = 1;
-               rfkill_register(wwan_rfkill);
+               err = rfkill_register(wwan_rfkill);
+               if (err)
+                       goto register_wwan_err;
        }
 
        return 0;
+register_wwan_err:
+       rfkill_unregister(bluetooth_rfkill);
+register_bluetooth_error:
+       rfkill_unregister(wifi_rfkill);
 add_sysfs_error:
        cleanup_sysfs(device);
        return err;