summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-09-08 11:05:08 +0200
committerJohn W. Linville <linville@tuxdriver.com>2008-09-11 15:53:34 -0400
commit69e6c010fd5f5015d3cc64718fbe266face93770 (patch)
tree77fef6e481637b3350346e795b24f1de44a2a46d /net
parent940b7a3a6c257391bda0950448591dd79efebf59 (diff)
downloadop-kernel-dev-69e6c010fd5f5015d3cc64718fbe266face93770.zip
op-kernel-dev-69e6c010fd5f5015d3cc64718fbe266face93770.tar.gz
mac80211: move some RCU locking into an if branch
The if itself doesn't need to be protected, so move in the RCU locking to avoid doing anything at all when the condition isn't true. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/mlme.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index df12e746..0abd5a4 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2612,13 +2612,12 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
mesh_peer_accepts_plinks(elems));
}
- rcu_read_lock();
-
if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && elems->supp_rates &&
memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0) {
-
supp_rates = ieee80211_sta_get_rates(local, elems, band);
+ rcu_read_lock();
+
sta = sta_info_get(local, mgmt->sa);
if (sta) {
u64 prev_rates;
@@ -2642,9 +2641,9 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
ieee80211_ibss_add_sta(sdata, NULL, mgmt->bssid,
mgmt->sa, supp_rates);
}
- }
- rcu_read_unlock();
+ rcu_read_unlock();
+ }
if (elems->ds_params && elems->ds_params_len == 1)
freq = ieee80211_channel_to_frequency(elems->ds_params[0]);
OpenPOWER on IntegriCloud