From b98b8b39e398958e1552c3686fc5403fc0608902 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Thu, 12 May 2011 15:11:37 +0200 Subject: [PATCH] --- yaml --- r: 247637 b: refs/heads/master c: a3836e02ba4c50db958d32d710b226f2408623dc h: refs/heads/master i: 247635: 7ca27262dba24d41d2f6dcd7eeff6b2256f0a815 v: v3 --- [refs] | 2 +- trunk/net/mac80211/cfg.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 0a4f573ce1bf..85147e453be6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8cb231530f03961b55aa4e84e6ead5590bcde04d +refs/heads/master: a3836e02ba4c50db958d32d710b226f2408623dc diff --git a/trunk/net/mac80211/cfg.c b/trunk/net/mac80211/cfg.c index 94690366321c..303f33fcb844 100644 --- a/trunk/net/mac80211/cfg.c +++ b/trunk/net/mac80211/cfg.c @@ -223,11 +223,11 @@ static int ieee80211_get_key(struct wiphy *wiphy, struct net_device *dev, goto out; if (pairwise) - key = sta->ptk; + key = rcu_dereference(sta->ptk); else if (key_idx < NUM_DEFAULT_KEYS) - key = sta->gtk[key_idx]; + key = rcu_dereference(sta->gtk[key_idx]); } else - key = sdata->keys[key_idx]; + key = rcu_dereference(sdata->keys[key_idx]); if (!key) goto out; @@ -952,8 +952,10 @@ static int ieee80211_change_mpath(struct wiphy *wiphy, static void mpath_set_pinfo(struct mesh_path *mpath, u8 *next_hop, struct mpath_info *pinfo) { - if (mpath->next_hop) - memcpy(next_hop, mpath->next_hop->sta.addr, ETH_ALEN); + struct sta_info *next_hop_sta = rcu_dereference(mpath->next_hop); + + if (next_hop_sta) + memcpy(next_hop, next_hop_sta->sta.addr, ETH_ALEN); else memset(next_hop, 0, ETH_ALEN);