wifi: mac80211: Don't translate MLD addresses for multicast
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Tue, 14 Feb 2023 10:10:48 +0000 (12:10 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 14 Feb 2023 12:36:06 +0000 (13:36 +0100)
MLD address translation should be done only for individually addressed
frames. Otherwise, AAD calculation would be wrong and the decryption
would fail.

Fixes: e66b7920aa5ac ("wifi: mac80211: fix initialization of rx->link and rx->link_sta")
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Link: https://lore.kernel.org/r/20230214101048.792414-1-andrei.otcheretianski@intel.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rx.c

index dd571c715b8e8aed7ac327214cee92366cf30a41..8965508928f37155d79b413ece86e04e5421710e 100644 (file)
@@ -4882,7 +4882,8 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
                hdr = (struct ieee80211_hdr *)rx->skb->data;
        }
 
-       if (unlikely(rx->sta && rx->sta->sta.mlo)) {
+       if (unlikely(rx->sta && rx->sta->sta.mlo) &&
+           is_unicast_ether_addr(hdr->addr1)) {
                /* translate to MLD addresses */
                if (ether_addr_equal(link->conf->addr, hdr->addr1))
                        ether_addr_copy(hdr->addr1, rx->sdata->vif.addr);