aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/core.c')
-rw-r--r--net/wireless/core.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c
index bea0d80710c8..f924a49b2425 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -370,7 +370,8 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv)
370 spin_lock_init(&rdev->bss_lock); 370 spin_lock_init(&rdev->bss_lock);
371 INIT_LIST_HEAD(&rdev->bss_list); 371 INIT_LIST_HEAD(&rdev->bss_list);
372 INIT_WORK(&rdev->scan_done_wk, __cfg80211_scan_done); 372 INIT_WORK(&rdev->scan_done_wk, __cfg80211_scan_done);
373 373 INIT_WORK(&rdev->sched_scan_results_wk, __cfg80211_sched_scan_results);
374 INIT_WORK(&rdev->sched_scan_stopped_wk, __cfg80211_sched_scan_stopped);
374#ifdef CONFIG_CFG80211_WEXT 375#ifdef CONFIG_CFG80211_WEXT
375 rdev->wiphy.wext = &cfg80211_wext_handler; 376 rdev->wiphy.wext = &cfg80211_wext_handler;
376#endif 377#endif
@@ -672,6 +673,11 @@ static void wdev_cleanup_work(struct work_struct *work)
672 ___cfg80211_scan_done(rdev, true); 673 ___cfg80211_scan_done(rdev, true);
673 } 674 }
674 675
676 if (WARN_ON(rdev->sched_scan_req &&
677 rdev->sched_scan_req->dev == wdev->netdev)) {
678 __cfg80211_stop_sched_scan(rdev, false);
679 }
680
675 cfg80211_unlock_rdev(rdev); 681 cfg80211_unlock_rdev(rdev);
676 682
677 mutex_lock(&rdev->devlist_mtx); 683 mutex_lock(&rdev->devlist_mtx);
@@ -759,6 +765,10 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
759 break; 765 break;
760 case NL80211_IFTYPE_P2P_CLIENT: 766 case NL80211_IFTYPE_P2P_CLIENT:
761 case NL80211_IFTYPE_STATION: 767 case NL80211_IFTYPE_STATION:
768 cfg80211_lock_rdev(rdev);
769 __cfg80211_stop_sched_scan(rdev, false);
770 cfg80211_unlock_rdev(rdev);
771
762 wdev_lock(wdev); 772 wdev_lock(wdev);
763#ifdef CONFIG_CFG80211_WEXT 773#ifdef CONFIG_CFG80211_WEXT
764 kfree(wdev->wext.ie); 774 kfree(wdev->wext.ie);