From: Johannes Berg <johannes.berg@xxxxxxxxx> Releasing the scan mutex while starting scans can lead to unexpected things happening, so we shouldn't do that. Fix that and hold the mutex across the scan triggering. Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- net/mac80211/scan.c | 14 -------------- 1 file changed, 14 deletions(-) --- wireless-testing.orig/net/mac80211/scan.c 2010-07-30 08:43:30.000000000 +0200 +++ wireless-testing/net/mac80211/scan.c 2010-07-30 08:43:38.000000000 +0200 @@ -401,19 +401,7 @@ static int __ieee80211_start_scan(struct else __set_bit(SCAN_SW_SCANNING, &local->scanning); - /* - * Kicking off the scan need not be protected, - * only the scan variable stuff, since now - * local->scan_req is assigned and other callers - * will abort their scan attempts. - * - * This avoids too many locking dependencies - * so that the scan completed calls have more - * locking freedom. - */ - ieee80211_recalc_idle(local); - mutex_unlock(&local->scan_mtx); if (local->ops->hw_scan) { WARN_ON(!ieee80211_prep_hw_scan(local)); @@ -421,8 +409,6 @@ static int __ieee80211_start_scan(struct } else rc = ieee80211_start_sw_scan(local); - mutex_lock(&local->scan_mtx); - if (rc) { kfree(local->hw_scan_req); local->hw_scan_req = NULL; -- 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