diff options
Diffstat (limited to 'net/mac80211/scan.c')
| -rw-r--r-- | net/mac80211/scan.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index fa8ddf576bc1..c4f2aeb31da3 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c @@ -469,16 +469,19 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)  	scan_req = rcu_dereference_protected(local->scan_req,  					     lockdep_is_held(&local->mtx)); -	if (scan_req != local->int_scan_req) { -		local->scan_info.aborted = aborted; -		cfg80211_scan_done(scan_req, &local->scan_info); -	}  	RCU_INIT_POINTER(local->scan_req, NULL);  	RCU_INIT_POINTER(local->scan_sdata, NULL);  	local->scanning = 0;  	local->scan_chandef.chan = NULL; +	synchronize_rcu(); + +	if (scan_req != local->int_scan_req) { +		local->scan_info.aborted = aborted; +		cfg80211_scan_done(scan_req, &local->scan_info); +	} +  	/* Set power back to normal operating levels. */  	ieee80211_hw_config(local, 0);  | 
