• Thomas Pugliese's avatar
    uwb: move mutex_lock to error case in uwbd_evt_handle_rc_bp_slot_change · 1fc671b3
    Thomas Pugliese authored
    Only acquire rc->uwb_dev.mutex in the error case in
    uwbd_evt_handle_rc_bp_slot_change.  This fixes a bug where establishing
    a reservation on a new channel will fail if we were unable to establish
    a reservation on the previous channel due to DRP conflict.
    
    If rc->uwb_dev.mutex is acquired in the non-error case when the uwb
    system is attempting to start beaconing, it will block because the start
    beaconing code is holding this mutex.  This prevents any other
    notifications from the URC from being processed.  In particular, the
    DRP_AVAILABILITY notification will not be processed during the start
    beaconing process which can result in a failure to establish a
    reservation.  It is safe to not hold the mutex in the non-error
    case since the only other place rc->uwb_dev.beacon_slot is accessed is
    in the same worker thread that uwbd_evt_handle_rc_bp_slot_change
    executes in.
    Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    1fc671b3
beacon.c 16.3 KB