Search Linux Wireless

Re: [PATCH 2/4] rfkill: fix led-trigger unregister order in error unwind

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday 15 July 2008, Henrique de Moraes Holschuh wrote:
> rfkill needs to unregister the led trigger AFTER a call to
> rfkill_remove_switch(), otherwise it will not update the LED state,
> possibly leaving it ON when it should be OFF.
> 
> To make led-trigger unregistering safer, guard against unregistering a
> trigger twice, and also against issuing trigger events to a led trigger
> that was unregistered.  This makes the error unwind paths more resilient.
> 
> Refer to commit 8a8f1c0437a77cce29c1cb6089f01f22a6d9ca6e,
> "rfkill: Register LED triggers before registering switch".
> 
> Signed-off-by: Henrique de Moraes Holschuh <hmh@xxxxxxxxxx>
> Cc: Ivo van Doorn <IvDoorn@xxxxxxxxx>
> Cc: Michael Buesch <mb@xxxxxxxxx>
> Cc: Dmitry Baryshkov <dbaryshkov@xxxxxxxxx>

Acked-by: Ivo van Doorn <IvDoorn@xxxxxxxxx>

> ---
>  net/rfkill/rfkill.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
> index 022fe50..fc3a4fd 100644
> --- a/net/rfkill/rfkill.c
> +++ b/net/rfkill/rfkill.c
> @@ -590,8 +590,10 @@ static void rfkill_led_trigger_register(struct rfkill *rfkill)
>  static void rfkill_led_trigger_unregister(struct rfkill *rfkill)
>  {
>  #ifdef CONFIG_RFKILL_LEDS
> -	if (rfkill->led_trigger.name)
> +	if (rfkill->led_trigger.name) {
>  		led_trigger_unregister(&rfkill->led_trigger);
> +		rfkill->led_trigger.name = NULL;
> +	}
>  #endif
>  }
>  
> @@ -627,8 +629,8 @@ int rfkill_register(struct rfkill *rfkill)
>  
>  	error = device_add(dev);
>  	if (error) {
> -		rfkill_led_trigger_unregister(rfkill);
>  		rfkill_remove_switch(rfkill);
> +		rfkill_led_trigger_unregister(rfkill);
>  		return error;
>  	}
>  


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux