aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2011-01-05 14:35:41 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-01-05 14:35:41 -0500
commit6303710d7aa62bfb154cd13ab5ab12cfa8baaf91 (patch)
tree4718ca3186d92819b3d617f32813eab6a1896b91 /net/mac80211
parentdb98a6cfcc9ac951067c9a2cb60459b618fd7b10 (diff)
parentd2460f4b2fa6dbdeec800414f9cf5b1fc8b71197 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/key.c6
-rw-r--r--net/mac80211/rx.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/net/mac80211/key.c b/net/mac80211/key.c
index 315ee301b75..8c02469b717 100644
--- a/net/mac80211/key.c
+++ b/net/mac80211/key.c
@@ -375,6 +375,12 @@ static void __ieee80211_key_destroy(struct ieee80211_key *key)
375 if (!key) 375 if (!key)
376 return; 376 return;
377 377
378 /*
379 * Synchronize so the TX path can no longer be using
380 * this key before we free/remove it.
381 */
382 synchronize_rcu();
383
378 if (key->local) 384 if (key->local)
379 ieee80211_key_disable_hw_accel(key); 385 ieee80211_key_disable_hw_accel(key);
380 386
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 9595e564bad..2b9db5ab904 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1808,6 +1808,8 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
1808 if (!fwd_skb && net_ratelimit()) 1808 if (!fwd_skb && net_ratelimit())
1809 printk(KERN_DEBUG "%s: failed to clone mesh frame\n", 1809 printk(KERN_DEBUG "%s: failed to clone mesh frame\n",
1810 sdata->name); 1810 sdata->name);
1811 if (!fwd_skb)
1812 goto out;
1811 1813
1812 fwd_hdr = (struct ieee80211_hdr *) fwd_skb->data; 1814 fwd_hdr = (struct ieee80211_hdr *) fwd_skb->data;
1813 memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN); 1815 memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
@@ -1845,6 +1847,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
1845 } 1847 }
1846 } 1848 }
1847 1849
1850 out:
1848 if (is_multicast_ether_addr(hdr->addr1) || 1851 if (is_multicast_ether_addr(hdr->addr1) ||
1849 sdata->dev->flags & IFF_PROMISC) 1852 sdata->dev->flags & IFF_PROMISC)
1850 return RX_CONTINUE; 1853 return RX_CONTINUE;