diff options
author | John W. Linville <linville@tuxdriver.com> | 2011-01-05 14:35:41 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-01-05 14:35:41 -0500 |
commit | 6303710d7aa62bfb154cd13ab5ab12cfa8baaf91 (patch) | |
tree | 4718ca3186d92819b3d617f32813eab6a1896b91 /net/mac80211 | |
parent | db98a6cfcc9ac951067c9a2cb60459b618fd7b10 (diff) | |
parent | d2460f4b2fa6dbdeec800414f9cf5b1fc8b71197 (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.c | 6 | ||||
-rw-r--r-- | net/mac80211/rx.c | 3 |
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; |