diff options
author | David S. Miller <davem@davemloft.net> | 2013-05-25 01:48:28 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-05-25 01:48:28 +0200 |
commit | e6ff4c75f9095f61b3a66c2a78e47b62864022dd (patch) | |
tree | 425ea9463cbec0b1975b8a33d9a56817143055d0 /net/mac80211/rate.c | |
parent | be2net: refactor HW workarounds in be_xmit() (diff) | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes (diff) | |
download | linux-e6ff4c75f9095f61b3a66c2a78e47b62864022dd.tar.xz linux-e6ff4c75f9095f61b3a66c2a78e47b62864022dd.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Merge net into net-next because some upcoming net-next changes
build on top of bug fixes that went into net.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211/rate.c')
-rw-r--r-- | net/mac80211/rate.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c index 0d51877efdb7..d3f414fe67e0 100644 --- a/net/mac80211/rate.c +++ b/net/mac80211/rate.c @@ -688,8 +688,15 @@ int rate_control_set_rates(struct ieee80211_hw *hw, struct ieee80211_sta *pubsta, struct ieee80211_sta_rates *rates) { - struct ieee80211_sta_rates *old = rcu_dereference(pubsta->rates); + struct ieee80211_sta_rates *old; + /* + * mac80211 guarantees that this function will not be called + * concurrently, so the following RCU access is safe, even without + * extra locking. This can not be checked easily, so we just set + * the condition to true. + */ + old = rcu_dereference_protected(pubsta->rates, true); rcu_assign_pointer(pubsta->rates, rates); if (old) kfree_rcu(old, rcu_head); |