summaryrefslogtreecommitdiffstats
path: root/net/mac80211/status.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2010-01-17 01:47:56 +0100
committerJohn W. Linville <linville@tuxdriver.com>2010-01-19 22:25:16 +0100
commit697e6a0fb0c8783695d4b4a5d7131476b296d623 (patch)
treefb64bc9a92a200405736683843a58209230b4056 /net/mac80211/status.c
parentmac80211: move and rename misc tx handler (diff)
downloadlinux-697e6a0fb0c8783695d4b4a5d7131476b296d623.tar.xz
linux-697e6a0fb0c8783695d4b4a5d7131476b296d623.zip
mac80211: clear TX control on filtered frames
When an skb survived a round-trip through the driver and needs to be re-used, its control information is definitely not valid any more, the driver will have overwritten it. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/status.c')
-rw-r--r--net/mac80211/status.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c
index 0ebcdda24200..9e171b178276 100644
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
@@ -69,6 +69,14 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local,
*/
goto drop;
+ /*
+ * This skb 'survived' a round-trip through the driver, and
+ * hopefully the driver didn't mangle it too badly. However,
+ * we can definitely not rely on the the control information
+ * being correct. Clear it so we don't get junk there.
+ */
+ memset(&info->control, 0, sizeof(info->control));
+
sta->tx_filtered_count++;
/*