Jiri Slaby ef7db2
From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Jiri Slaby ef7db2
Date: Tue, 14 Feb 2023 12:10:48 +0200
Jiri Slaby ef7db2
Subject: [PATCH] wifi: mac80211: Don't translate MLD addresses for multicast
Jiri Slaby ef7db2
References: bsc#1012628
Jiri Slaby ef7db2
Patch-mainline: 6.2.3
Jiri Slaby ef7db2
Git-commit: daf8fb4295dccc032515cdc1bd3873370063542b
Jiri Slaby ef7db2
Jiri Slaby ef7db2
[ Upstream commit daf8fb4295dccc032515cdc1bd3873370063542b ]
Jiri Slaby ef7db2
Jiri Slaby ef7db2
MLD address translation should be done only for individually addressed
Jiri Slaby ef7db2
frames. Otherwise, AAD calculation would be wrong and the decryption
Jiri Slaby ef7db2
would fail.
Jiri Slaby ef7db2
Jiri Slaby ef7db2
Fixes: e66b7920aa5ac ("wifi: mac80211: fix initialization of rx->link and rx->link_sta")
Jiri Slaby ef7db2
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Jiri Slaby ef7db2
Link: https://lore.kernel.org/r/20230214101048.792414-1-andrei.otcheretianski@intel.com
Jiri Slaby ef7db2
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Jiri Slaby ef7db2
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby ef7db2
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby ef7db2
---
Jiri Slaby ef7db2
 net/mac80211/rx.c | 3 ++-
Jiri Slaby ef7db2
 1 file changed, 2 insertions(+), 1 deletion(-)
Jiri Slaby ef7db2
Jiri Slaby ef7db2
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
Jiri Slaby ef7db2
index 3c4541ee..870b8d04 100644
Jiri Slaby ef7db2
--- a/net/mac80211/rx.c
Jiri Slaby ef7db2
+++ b/net/mac80211/rx.c
Jiri Slaby ef7db2
@@ -4840,7 +4840,8 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
Jiri Slaby ef7db2
 		hdr = (struct ieee80211_hdr *)rx->skb->data;
Jiri Slaby ef7db2
 	}
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-	if (unlikely(rx->sta && rx->sta->sta.mlo)) {
Jiri Slaby ef7db2
+	if (unlikely(rx->sta && rx->sta->sta.mlo) &&
Jiri Slaby ef7db2
+	    is_unicast_ether_addr(hdr->addr1)) {
Jiri Slaby ef7db2
 		/* translate to MLD addresses */
Jiri Slaby ef7db2
 		if (ether_addr_equal(link->conf->addr, hdr->addr1))
Jiri Slaby ef7db2
 			ether_addr_copy(hdr->addr1, rx->sdata->vif.addr);
Jiri Slaby ef7db2
-- 
Jiri Slaby ef7db2
2.35.3
Jiri Slaby ef7db2