diff options
Diffstat (limited to 'package/mac80211/patches/306-pending-rt2x00-zero-out-rx_status.patch')
-rw-r--r-- | package/mac80211/patches/306-pending-rt2x00-zero-out-rx_status.patch | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/package/mac80211/patches/306-pending-rt2x00-zero-out-rx_status.patch b/package/mac80211/patches/306-pending-rt2x00-zero-out-rx_status.patch index 1580337adc..884b942802 100644 --- a/package/mac80211/patches/306-pending-rt2x00-zero-out-rx_status.patch +++ b/package/mac80211/patches/306-pending-rt2x00-zero-out-rx_status.patch @@ -1,12 +1,13 @@ -From 84b435b38a84c9a7e8ba33e8d02d2f967f847ce1 Mon Sep 17 00:00:00 2001 +From e922d683ca8001ce9a6272d6ab12d74e72c36521 Mon Sep 17 00:00:00 2001 From: Gabor Juhos <juhosg@openwrt.org> Date: Tue, 11 Dec 2012 14:15:53 +0100 -Subject: [PATCH 1/3] rt2x00: zero-out rx_status +Subject: [PATCH v2] rt2x00: zero-out rx_status In commit 'mac80211: support radiotap vendor namespace RX data' -new fields were added to 'struct ieee80211_rx_status'. -The rt2x00 driver does not initializes those fields and -this can cause unexpected behaviour. +new fields were added to 'struct ieee80211_rx_status' and those +fileds must be zeroed. However the rt2x00 driver stores driver +specific data in the cb array of the rx skbs, so the fields +might contain garbage and this can cause unexpected behaviour. The rt2x00 driver from the compat-wireless-2012-12-01 tarball caused the following warning: @@ -38,15 +39,25 @@ zeroes. Cc: <users@rt2x00.serialmonkey.com> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> --- - drivers/net/wireless/rt2x00/rt2x00dev.c | 2 ++ - 1 file changed, 2 insertions(+) +v2: + - update the commit message and add a comment to the code + - drop the ath5k and p54 patches +--- + drivers/net/wireless/rt2x00/rt2x00dev.c | 8 ++++++++ + 1 file changed, 8 insertions(+) --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c -@@ -685,6 +685,8 @@ void rt2x00lib_rxdone(struct queue_entry +@@ -685,6 +685,14 @@ void rt2x00lib_rxdone(struct queue_entry * to mac80211. */ rx_status = IEEE80211_SKB_RXCB(entry->skb); ++ ++ /* Ensure that all fields of rx_status are initialized ++ * properly. The skb->cb array was used for driver ++ * specific informations, so rx_status might contain ++ * garbage. ++ */ + memset(rx_status, 0, sizeof(*rx_status)); + rx_status->mactime = rxdesc.timestamp; |