]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mac80211: Check 802.11 encaps offloading in ieee80211_tx_h_select_key()
authorRemi Pommarel <repk@triplefau.lt>
Thu, 17 Jul 2025 15:45:28 +0000 (17:45 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 14:38:49 +0000 (16:38 +0200)
[ Upstream commit 4037c468d1b3c508d69e6df0ef47fdee3d440e39 ]

With 802.11 encapsulation offloading, ieee80211_tx_h_select_key() is
called on 802.3 frames. In that case do not try to use skb data as
valid 802.11 headers.

Reported-by: Bert Karwatzki <spasswolf@web.de>
Closes: https://lore.kernel.org/linux-wireless/20250410215527.3001-1-spasswolf@web.de
Fixes: bb42f2d13ffc ("mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue")
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
Link: https://patch.msgid.link/1af4b5b903a5fca5ebe67333d5854f93b2be5abe.1752765971.git.repk@triplefau.lt
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mac80211/tx.c

index 04f4d574401f81f54f478d4c1ce07622d0d30f48..73304a5cf6fc557b422ecfd3c36a8c490462c30c 100644 (file)
@@ -612,6 +612,12 @@ ieee80211_tx_h_select_key(struct ieee80211_tx_data *tx)
        else
                tx->key = NULL;
 
+       if (info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) {
+               if (tx->key && tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
+                       info->control.hw_key = &tx->key->conf;
+               return TX_CONTINUE;
+       }
+
        if (tx->key) {
                bool skip_hw = false;