CVE-2026-80943: wifi: rtlwifi: rtl8192du: check QoS TID before indexing tids
In the Linux kernel, the following vulnerability has been resolved:
wifi: rtlwifi: rtl8192du: check QoS TID before indexing tids
rtl92dutxfilldesc() uses ieee80211gettid() to read the QoS TID from the 802.11 header and then uses it as an index into staentry->tids[]. ieee80211gettid() returns the low 4-bit QoS TID value, so the result can be in the range 0..15.
rtlwifi only allocates MAXTIDCOUNT entries for staentry->tids[], and MAXTIDCOUNT is 9. A QoS TID greater than 8 therefore indexes past the aggregation state array. Keep the default RTLAGGSTOP state for out-of-range TIDs, matching rtl92cutxfilldesc().
This issue was detected by our static analysis tool and confirmed by manual audit. UBSAN validation for the same bug pattern reports an array-index-out-of-bounds access with index 10 for type 'rtltiddata [9]'.
Affected Software
Event History
Frequently Asked Questions
Which systems are affected by this flaw?
Systems using the Linux kernel's rtlwifi rtl8192du transmit path are affected. The out-of-bounds access is in rtl92du_tx_fill_desc().
What input is required to trigger the invalid array access?
The QoS TID read from the 802.11 header must be greater than 8. ieee80211_get_tid() can return values from 0 through 15, while the affected tids array has only 9 entries.
How can the issue be identified during validation?
UBSAN can report an array-index-out-of-bounds access, such as index 10 for rtl_tid_data[9]. The bug was also identified through static analysis and confirmed by manual audit.
What behavior does the fix apply for unsupported TID values?
For out-of-range TIDs, the fix retains the default RTL_AGG_STOP aggregation state instead of indexing the aggregation-state array.