]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
mac80211: Properly access radiotap vendor data
authorIlan Peer <ilan.peer@intel.com>
Sat, 15 Dec 2018 09:03:25 +0000 (11:03 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 19 Dec 2018 08:41:10 +0000 (09:41 +0100)
The radiotap vendor data might be placed after some other
radiotap elements, and thus when accessing it, need to access
the correct offset in the skb data. Fix the code accordingly.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rx.c

index c90904ce6e99f7fba9662b26d165b60d9faec5ff..b33d37186576ab8b73867694e7b3b8f9437e84f1 100644 (file)
@@ -762,8 +762,12 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb,
        if (status->flag & RX_FLAG_RADIOTAP_HE_MU)
                rtap_space += sizeof(struct ieee80211_radiotap_he_mu);
 
+       if (status->flag & RX_FLAG_RADIOTAP_LSIG)
+               rtap_space += sizeof(struct ieee80211_radiotap_lsig);
+
        if (unlikely(status->flag & RX_FLAG_RADIOTAP_VENDOR_DATA)) {
-               struct ieee80211_vendor_radiotap *rtap = (void *)origskb->data;
+               struct ieee80211_vendor_radiotap *rtap =
+                       (void *)(origskb->data + rtap_space);
 
                rtap_space += sizeof(*rtap) + rtap->len + rtap->pad;
        }