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