diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-10-31 00:48:32 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-10-31 00:48:32 -0400 |
commit | bd3d9037738bd614e590223157831f97cfc92666 (patch) | |
tree | 51b318b2264f00f73edd4834ee9fff3f58c73053 | |
parent | 6315579d3870700313b2d645db7c46263340dc2b (diff) | |
download | longterm-queue-4.8-bd3d9037738bd614e590223157831f97cfc92666.tar.gz |
mac80211: remove patch unapplicable for v4.8
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | queue/mac80211-fix-MU-MIMO-follow-MAC-mode.patch | 123 | ||||
-rw-r--r-- | queue/series | 1 |
2 files changed, 0 insertions, 124 deletions
diff --git a/queue/mac80211-fix-MU-MIMO-follow-MAC-mode.patch b/queue/mac80211-fix-MU-MIMO-follow-MAC-mode.patch deleted file mode 100644 index 0da072b..0000000 --- a/queue/mac80211-fix-MU-MIMO-follow-MAC-mode.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 9e478066eae41211c92a8f63cc69aafc391bd6ab Mon Sep 17 00:00:00 2001 -From: Johannes Berg <johannes.berg@intel.com> -Date: Thu, 13 Apr 2017 14:23:49 +0200 -Subject: [PATCH] mac80211: fix MU-MIMO follow-MAC mode - -commit 9e478066eae41211c92a8f63cc69aafc391bd6ab upstream. - -There are two bugs in the follow-MAC code: - * it treats the radiotap header as the 802.11 header - (therefore it can't possibly work) - * it doesn't verify that the skb data it accesses is actually - present in the header, which is mitigated by the first point - -Fix this by moving all of this out into a separate function. -This function copies the data it needs using skb_copy_bits() -to make sure it can be accessed if it's paged, and offsets -that by the possibly present vendor radiotap header. - -This also makes all those conditions more readable. - -Cc: stable@vger.kernel.org -Signed-off-by: Johannes Berg <johannes.berg@intel.com> - -diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c -index e48724a6725e..4b12c70c85f0 100644 ---- a/net/mac80211/rx.c -+++ b/net/mac80211/rx.c -@@ -208,6 +208,51 @@ ieee80211_rx_radiotap_hdrlen(struct ieee80211_local *local, - return len; - } - -+static void ieee80211_handle_mu_mimo_mon(struct ieee80211_sub_if_data *sdata, -+ struct sk_buff *skb, -+ int rtap_vendor_space) -+{ -+ struct { -+ struct ieee80211_hdr_3addr hdr; -+ u8 category; -+ u8 action_code; -+ } __packed action; -+ -+ if (!sdata) -+ return; -+ -+ BUILD_BUG_ON(sizeof(action) != IEEE80211_MIN_ACTION_SIZE + 1); -+ -+ if (skb->len < rtap_vendor_space + sizeof(action) + -+ VHT_MUMIMO_GROUPS_DATA_LEN) -+ return; -+ -+ if (!is_valid_ether_addr(sdata->u.mntr.mu_follow_addr)) -+ return; -+ -+ skb_copy_bits(skb, rtap_vendor_space, &action, sizeof(action)); -+ -+ if (!ieee80211_is_action(action.hdr.frame_control)) -+ return; -+ -+ if (action.category != WLAN_CATEGORY_VHT) -+ return; -+ -+ if (action.action_code != WLAN_VHT_ACTION_GROUPID_MGMT) -+ return; -+ -+ if (!ether_addr_equal(action.hdr.addr1, sdata->u.mntr.mu_follow_addr)) -+ return; -+ -+ skb = skb_copy(skb, GFP_ATOMIC); -+ if (!skb) -+ return; -+ -+ skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME; -+ skb_queue_tail(&sdata->skb_queue, skb); -+ ieee80211_queue_work(&sdata->local->hw, &sdata->work); -+} -+ - /* - * ieee80211_add_rx_radiotap_header - add radiotap header - * -@@ -515,7 +560,6 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb, - struct net_device *prev_dev = NULL; - int present_fcs_len = 0; - unsigned int rtap_vendor_space = 0; -- struct ieee80211_mgmt *mgmt; - struct ieee80211_sub_if_data *monitor_sdata = - rcu_dereference(local->monitor_sdata); - -@@ -553,6 +597,8 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb, - return remove_monitor_info(local, origskb, rtap_vendor_space); - } - -+ ieee80211_handle_mu_mimo_mon(monitor_sdata, origskb, rtap_vendor_space); -+ - /* room for the radiotap header based on driver features */ - rt_hdrlen = ieee80211_rx_radiotap_hdrlen(local, status, origskb); - needed_headroom = rt_hdrlen - rtap_vendor_space; -@@ -618,23 +664,6 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb, - ieee80211_rx_stats(sdata->dev, skb->len); - } - -- mgmt = (void *)skb->data; -- if (monitor_sdata && -- skb->len >= IEEE80211_MIN_ACTION_SIZE + 1 + VHT_MUMIMO_GROUPS_DATA_LEN && -- ieee80211_is_action(mgmt->frame_control) && -- mgmt->u.action.category == WLAN_CATEGORY_VHT && -- mgmt->u.action.u.vht_group_notif.action_code == WLAN_VHT_ACTION_GROUPID_MGMT && -- is_valid_ether_addr(monitor_sdata->u.mntr.mu_follow_addr) && -- ether_addr_equal(mgmt->da, monitor_sdata->u.mntr.mu_follow_addr)) { -- struct sk_buff *mu_skb = skb_copy(skb, GFP_ATOMIC); -- -- if (mu_skb) { -- mu_skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME; -- skb_queue_tail(&monitor_sdata->skb_queue, mu_skb); -- ieee80211_queue_work(&local->hw, &monitor_sdata->work); -- } -- } -- - if (prev_dev) { - skb->dev = prev_dev; - netif_receive_skb(skb); --- -2.12.0 - diff --git a/queue/series b/queue/series index 63703b7..25e0673 100644 --- a/queue/series +++ b/queue/series @@ -9,7 +9,6 @@ s390-mm-fix-CMMA-vs-KSM-vs-others.patch Input-elantech-add-Fujitsu-Lifebook-E547-to-force-cr.patch mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch mac80211-reject-ToDS-broadcast-data-frames.patch -mac80211-fix-MU-MIMO-follow-MAC-mode.patch ubi-upd-Always-flush-after-prepared-for-an-update.patch powerpc-kprobe-Fix-oops-when-kprobed-on-stdu-instruc.patch x86-mce-AMD-Give-a-name-to-MCA-bank-3-when-accessed-.patch |