aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-08-09 05:51:29 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-14 09:13:54 -0400
commitaee83eaff859694642b323553f93b9eb59141144 (patch)
treecba03d4b09fa82b8da3958080f3e7b7e1e4cb43a /net/wireless
parentaf6a3fc7e728eb4cd14653c8cfc1ee81432cfd5d (diff)
cfg80211: add missing device list locking
When calling into the wext code from the NETDEV_UP notifier, we need to hold the devlist_mtx mutex as the wext code ends up calling into channel checks. Reported-by: Kalle Valo <kalle.valo@iki.fi> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Tested-by: Kalle Valo <kalle.valo@iki.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c
index 62e1ac00879b..e630648fef79 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -710,6 +710,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
710 case NETDEV_UP: 710 case NETDEV_UP:
711#ifdef CONFIG_WIRELESS_EXT 711#ifdef CONFIG_WIRELESS_EXT
712 cfg80211_lock_rdev(rdev); 712 cfg80211_lock_rdev(rdev);
713 mutex_lock(&rdev->devlist_mtx);
713 wdev_lock(wdev); 714 wdev_lock(wdev);
714 switch (wdev->iftype) { 715 switch (wdev->iftype) {
715 case NL80211_IFTYPE_ADHOC: 716 case NL80211_IFTYPE_ADHOC:
@@ -722,6 +723,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
722 break; 723 break;
723 } 724 }
724 wdev_unlock(wdev); 725 wdev_unlock(wdev);
726 mutex_unlock(&rdev->devlist_mtx);
725 cfg80211_unlock_rdev(rdev); 727 cfg80211_unlock_rdev(rdev);
726#endif 728#endif
727 break; 729 break;