diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-08-09 05:51:29 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-14 09:13:54 -0400 |
commit | aee83eaff859694642b323553f93b9eb59141144 (patch) | |
tree | cba03d4b09fa82b8da3958080f3e7b7e1e4cb43a /net/wireless | |
parent | af6a3fc7e728eb4cd14653c8cfc1ee81432cfd5d (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.c | 2 |
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; |