• Henrique de Moraes Holschuh's avatar
    rfkill: ignore errors from rfkill_toggle_radio in rfkill_add_switch · fd4484af
    Henrique de Moraes Holschuh authored
    rfkill_add_switch() calls rfkill_toggle_radio() to set the state of a
    recently registered rfkill class to the current global state [for that
    rfkill->type].
    
    The rfkill_toggle_radio() call is going to error out if the hardware is
    RFKILL_STATE_HARD_BLOCKED, and the global state is RFKILL_STATE_UNBLOCKED.
    
    That is a quite normal situation which I missed to account for.  As things
    stand, the error return from rfkill_toggle_radio ends up causing
    rfkill_register to bail out with an error (de-registering the new switch in
    the process), which is Not Nice.
    
    Change rfkill_add_switch() to not return errors because of a failed call to
    rfkill_toggle_radio().  We can go back to returning errors again (if that's
    indeed the right thing to do) if we define the exact error codes the
    rfkill->toggle_radio callbacks are to return in each situation, so that we
    can ignore the right ones only.
    
    Bug reported by "kionez <kionez@anche.no>".
    Signed-off-by: default avatarHenrique de Moraes Holschuh <hmh@hmh.eng.br>
    Cc: kionez <kionez@anche.no>
    Acked-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    fd4484af
rfkill.c 17.5 KB