Commit 1eab33aa63c9 for kernel

commit 1eab33aa63c993685dd341e03bd5b267dd7403fa
Author: Benjamin Berg <benjamin.berg@intel.com>
Date:   Thu Jan 29 11:33:50 2026 +0100

    wifi: mac80211: correctly decode TTLM with default link map

    TID-To-Link Mapping (TTLM) elements do not contain any link mapping
    presence indicator if a default mapping is used and parsing needs to be
    skipped.

    Note that access points should not explicitly report an advertised TTLM
    with a default mapping as that is the implied mapping if the element is
    not included, this is even the case when switching back to the default
    mapping. However, mac80211 would incorrectly parse the frame and would
    also read one byte beyond the end of the element.

    Reported-by: Ruikai Peng <ruikai@pwno.io>
    Closes: https://lore.kernel.org/linux-wireless/CAFD3drMqc9YWvTCSHLyP89AOpBZsHdZ+pak6zVftYoZcUyF7gw@mail.gmail.com
    Fixes: 702e80470a33 ("wifi: mac80211: support handling of advertised TID-to-link mapping")
    Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
    Link: https://patch.msgid.link/20260129113349.d6b96f12c732.I69212a50f0f70db185edd3abefb6f04d3cb3e5ff@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index b72345c779c0..73f57b9e0ebf 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -8,7 +8,7 @@
  * Copyright 2007, Michael Wu <flamingice@sourmilk.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
  * Copyright (C) 2015 - 2017 Intel Deutschland GmbH
- * Copyright (C) 2018 - 2025 Intel Corporation
+ * Copyright (C) 2018 - 2026 Intel Corporation
  */

 #include <linux/delay.h>
@@ -6190,8 +6190,10 @@ ieee80211_parse_adv_t2l(struct ieee80211_sub_if_data *sdata,
 		return -EINVAL;
 	}

-	link_map_presence = *pos;
-	pos++;
+	if (!(control & IEEE80211_TTLM_CONTROL_DEF_LINK_MAP)) {
+		link_map_presence = *pos;
+		pos++;
+	}

 	if (control & IEEE80211_TTLM_CONTROL_SWITCH_TIME_PRESENT) {
 		ttlm_info->switch_time = get_unaligned_le16(pos);