Commit 6d97db59 authored by Anssi Hannula's avatar Anssi Hannula Committed by Matthew Garrett

hp-wmi: clear rfkill device pointers when appropriate

NULLify rfkill pointers during initialization. This prevents dereference
of invalid pointer in case the driver is rebound and some rfkill device
isn't detected anymore. Clear them also in hp_wmi_rfkill_setup failure
path so that an rfkill initialization failure doesn't need to be fatal
for the whole driver.
Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
parent eceb7bdf
...@@ -587,14 +587,17 @@ static int __devinit hp_wmi_rfkill_setup(struct platform_device *device) ...@@ -587,14 +587,17 @@ static int __devinit hp_wmi_rfkill_setup(struct platform_device *device)
return 0; return 0;
register_wwan_err: register_wwan_err:
rfkill_destroy(wwan_rfkill); rfkill_destroy(wwan_rfkill);
wwan_rfkill = NULL;
if (bluetooth_rfkill) if (bluetooth_rfkill)
rfkill_unregister(bluetooth_rfkill); rfkill_unregister(bluetooth_rfkill);
register_bluetooth_error: register_bluetooth_error:
rfkill_destroy(bluetooth_rfkill); rfkill_destroy(bluetooth_rfkill);
bluetooth_rfkill = NULL;
if (wifi_rfkill) if (wifi_rfkill)
rfkill_unregister(wifi_rfkill); rfkill_unregister(wifi_rfkill);
register_wifi_error: register_wifi_error:
rfkill_destroy(wifi_rfkill); rfkill_destroy(wifi_rfkill);
wifi_rfkill = NULL;
return err; return err;
} }
...@@ -602,6 +605,11 @@ static int __devinit hp_wmi_bios_setup(struct platform_device *device) ...@@ -602,6 +605,11 @@ static int __devinit hp_wmi_bios_setup(struct platform_device *device)
{ {
int err; int err;
/* clear detected rfkill devices */
wifi_rfkill = NULL;
bluetooth_rfkill = NULL;
wwan_rfkill = NULL;
err = hp_wmi_rfkill_setup(device); err = hp_wmi_rfkill_setup(device);
if (err) if (err)
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment