aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/ieee80211.c')
-rw-r--r--net/mac80211/ieee80211.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 5fc240259f55..00df2a9a2661 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -493,7 +493,16 @@ static void ieee80211_if_shutdown(struct net_device *dev)
493 case IEEE80211_IF_TYPE_IBSS: 493 case IEEE80211_IF_TYPE_IBSS:
494 sdata->u.sta.state = IEEE80211_DISABLED; 494 sdata->u.sta.state = IEEE80211_DISABLED;
495 del_timer_sync(&sdata->u.sta.timer); 495 del_timer_sync(&sdata->u.sta.timer);
496 /*
497 * Holding the sub_if_lock for writing here blocks
498 * out the receive path and makes sure it's not
499 * currently processing a packet that may get
500 * added to the queue.
501 */
502 write_lock_bh(&local->sub_if_lock);
496 skb_queue_purge(&sdata->u.sta.skb_queue); 503 skb_queue_purge(&sdata->u.sta.skb_queue);
504 write_unlock_bh(&local->sub_if_lock);
505
497 if (!local->ops->hw_scan && 506 if (!local->ops->hw_scan &&
498 local->scan_dev == sdata->dev) { 507 local->scan_dev == sdata->dev) {
499 local->sta_scanning = 0; 508 local->sta_scanning = 0;