aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-12-14 06:20:29 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-12-15 14:45:46 -0500
commit87be1e1e00f870567780dec111193426b4c085e8 (patch)
tree1d86707afa1e5f116804f0722573eeaf9d9ab13d /net
parent92b62f28d02d3aafd824062f0ea57cc36fbc59d6 (diff)
mac80211: use station mutex in configuration
There's no need to use RCU here, we can just lock the station mutex instead. This allows the code to sleep, which is necessary for later patches. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/cfg.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index bc83a6605ea6..3acda35df5cb 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -954,11 +954,11 @@ static int ieee80211_change_station(struct wiphy *wiphy,
954 struct sta_info *sta; 954 struct sta_info *sta;
955 struct ieee80211_sub_if_data *vlansdata; 955 struct ieee80211_sub_if_data *vlansdata;
956 956
957 rcu_read_lock(); 957 mutex_lock(&local->sta_mtx);
958 958
959 sta = sta_info_get_bss(sdata, mac); 959 sta = sta_info_get_bss(sdata, mac);
960 if (!sta) { 960 if (!sta) {
961 rcu_read_unlock(); 961 mutex_unlock(&local->sta_mtx);
962 return -ENOENT; 962 return -ENOENT;
963 } 963 }
964 964
@@ -966,7 +966,7 @@ static int ieee80211_change_station(struct wiphy *wiphy,
966 if (sdata->vif.type == NL80211_IFTYPE_STATION && 966 if (sdata->vif.type == NL80211_IFTYPE_STATION &&
967 params->supported_rates && 967 params->supported_rates &&
968 !test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { 968 !test_sta_flag(sta, WLAN_STA_TDLS_PEER)) {
969 rcu_read_unlock(); 969 mutex_unlock(&local->sta_mtx);
970 return -EINVAL; 970 return -EINVAL;
971 } 971 }
972 972
@@ -975,13 +975,13 @@ static int ieee80211_change_station(struct wiphy *wiphy,
975 975
976 if (vlansdata->vif.type != NL80211_IFTYPE_AP_VLAN && 976 if (vlansdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
977 vlansdata->vif.type != NL80211_IFTYPE_AP) { 977 vlansdata->vif.type != NL80211_IFTYPE_AP) {
978 rcu_read_unlock(); 978 mutex_unlock(&local->sta_mtx);
979 return -EINVAL; 979 return -EINVAL;
980 } 980 }
981 981
982 if (params->vlan->ieee80211_ptr->use_4addr) { 982 if (params->vlan->ieee80211_ptr->use_4addr) {
983 if (vlansdata->u.vlan.sta) { 983 if (vlansdata->u.vlan.sta) {
984 rcu_read_unlock(); 984 mutex_unlock(&local->sta_mtx);
985 return -EBUSY; 985 return -EBUSY;
986 } 986 }
987 987
@@ -997,7 +997,7 @@ static int ieee80211_change_station(struct wiphy *wiphy,
997 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && params->supported_rates) 997 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && params->supported_rates)
998 rate_control_rate_init(sta); 998 rate_control_rate_init(sta);
999 999
1000 rcu_read_unlock(); 1000 mutex_unlock(&local->sta_mtx);
1001 1001
1002 if (sdata->vif.type == NL80211_IFTYPE_STATION && 1002 if (sdata->vif.type == NL80211_IFTYPE_STATION &&
1003 params->sta_flags_mask & BIT(NL80211_STA_FLAG_AUTHORIZED)) 1003 params->sta_flags_mask & BIT(NL80211_STA_FLAG_AUTHORIZED))