Skip to content

Commit 1eab33a

Browse files
benzeajmberg-intel
authored andcommitted
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: 702e804 ("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>
1 parent 0a80e38 commit 1eab33a

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

net/mac80211/mlme.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Copyright 2007, Michael Wu <flamingice@sourmilk.net>
99
* Copyright 2013-2014 Intel Mobile Communications GmbH
1010
* Copyright (C) 2015 - 2017 Intel Deutschland GmbH
11-
* Copyright (C) 2018 - 2025 Intel Corporation
11+
* Copyright (C) 2018 - 2026 Intel Corporation
1212
*/
1313

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

6193-
link_map_presence = *pos;
6194-
pos++;
6193+
if (!(control & IEEE80211_TTLM_CONTROL_DEF_LINK_MAP)) {
6194+
link_map_presence = *pos;
6195+
pos++;
6196+
}
61956197

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

0 commit comments

Comments
 (0)