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: Anssi Hannula <anssi.hannula@iki.fi> Signed-off-by: Matthew Garrett <mjg@redhat.com>
This commit is contained in:
parent
eceb7bdf64
commit
6d97db590c
1 changed files with 8 additions and 0 deletions
|
@ -587,14 +587,17 @@ static int __devinit hp_wmi_rfkill_setup(struct platform_device *device)
|
|||
return 0;
|
||||
register_wwan_err:
|
||||
rfkill_destroy(wwan_rfkill);
|
||||
wwan_rfkill = NULL;
|
||||
if (bluetooth_rfkill)
|
||||
rfkill_unregister(bluetooth_rfkill);
|
||||
register_bluetooth_error:
|
||||
rfkill_destroy(bluetooth_rfkill);
|
||||
bluetooth_rfkill = NULL;
|
||||
if (wifi_rfkill)
|
||||
rfkill_unregister(wifi_rfkill);
|
||||
register_wifi_error:
|
||||
rfkill_destroy(wifi_rfkill);
|
||||
wifi_rfkill = NULL;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -602,6 +605,11 @@ static int __devinit hp_wmi_bios_setup(struct platform_device *device)
|
|||
{
|
||||
int err;
|
||||
|
||||
/* clear detected rfkill devices */
|
||||
wifi_rfkill = NULL;
|
||||
bluetooth_rfkill = NULL;
|
||||
wwan_rfkill = NULL;
|
||||
|
||||
err = hp_wmi_rfkill_setup(device);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
Loading…
Add table
Reference in a new issue