After finishing scan, at76_dwork_hw_scan locks priv->mtx and calls ieee80211_scan_completed, which in turn can possibly call at76_config, which tries to lock the mutex again. Signed-off-by: Milan Plzik <milan.plzik@xxxxxxxxx> --- drivers/net/wireless/at76_usb.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/at76_usb.c b/drivers/net/wireless/at76_usb.c index eab8f16..dc6edb3 100644 --- a/drivers/net/wireless/at76_usb.c +++ b/drivers/net/wireless/at76_usb.c @@ -1897,8 +1897,6 @@ static void at76_dwork_hw_scan(struct work_struct *work) dwork_hw_scan.work); int ret; - mutex_lock(&priv->mtx); - ret = at76_get_cmd_status(priv->udev, CMD_SCAN); at76_dbg(DBG_MAC80211, "%s: CMD_SCAN status 0x%02x", __func__, ret); @@ -1909,16 +1907,16 @@ static void at76_dwork_hw_scan(struct work_struct *work) SCAN_POLL_INTERVAL); goto exit; } - + ieee80211_scan_completed(priv->hw); if (is_valid_ether_addr(priv->bssid)) at76_join(priv); - ieee80211_wake_queues(priv->hw); +// CHECKME: ieee80211_wake_queues(priv->hw); exit: - mutex_unlock(&priv->mtx); + return; } static int at76_hw_scan(struct ieee80211_hw *hw, u8 *ssid, size_t len) -- 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