Re: [PATCH 1/2] hp-wmi: fix unregister order in hp_wmi_rfkill_setup() once again

From: Darren Hart
Date: Tue Mar 08 2016 - 12:01:45 EST


On Tue, Mar 08, 2016 at 04:58:40PM +0100, Maciej S. Szmigiero wrote:
> Hi Darren,
>
> Thanks for review, see also my comments below.
>
> On 08.03.2016 13:39, Darren Hart wrote:
> > On Sun, Mar 06, 2016 at 11:38:36PM +0100, Maciej S. Szmigiero wrote:
> >> --- a/drivers/platform/x86/hp-wmi.c
> >> +++ b/drivers/platform/x86/hp-wmi.c
> >> @@ -746,7 +746,7 @@ static int __init hp_wmi_rfkill_setup(struct platform_device *device)
> >> (void *) HPWMI_BLUETOOTH);
> >> if (!bluetooth_rfkill) {
> >> err = -ENOMEM;
> >> - goto register_wifi_error;
> >> + goto register_bluetooth_error;
> >
> > In this and all cases below, the goto label should match the situation, jumping
> > to register_bluetooth_error would be incorrect as we experienced a wifi error.
>
> Here we experienced an BT error - BT rkill allocation failed,
> so jump is to "register_bluetooth_error".
>
> The second jump to "register_bluetooth_error" is in another case of BT error:
> when its rfkill registration failed.
>
> It is the same label since if BT rfkill allocation had failed
> rfkill_destroy(bluetooth_rfkill) call in cleanup does nothing but we still
> need to possibly unregister WiFi rfkill that might have been registered in
> a previews block (and then fall through to next label to destroy WiFi rfkill).
>
> It would be possible to have separate jump labels skipping unnecessary
> rfkill_destroy() calls on allocation failure, but this would mean
> that we would have 7 labels in such small block of cleanup code.

My apologies, I read through this too quickly. The patch is correct as is.
I have wrapped the commit message at 75 characters and queued to the testing
branch.

The one thing that's missing in the commit message is a description of how this
was failing. It can, however, be inferred.

Thanks for the patient reply, I deserved a slap for my initial response.

--
Darren Hart
Intel Open Source Technology Center