diff options
Diffstat (limited to 'net/wireless/core.c')
-rw-r--r-- | net/wireless/core.c | 12 |
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); |