]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtlwifi: 8192cu: fix tid out of range in rtl92cu_tx_fill_desc()
authorMorning Star <alexbestoso@gmail.com>
Thu, 27 Nov 2025 08:37:08 +0000 (16:37 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 15 Dec 2025 08:45:10 +0000 (16:45 +0800)
TID getting from ieee80211_get_tid() might be out of range of array size
of sta_entry->tids[], so check TID is less than MAX_TID_COUNT. Othwerwise,
UBSAN warn:

 UBSAN: array-index-out-of-bounds in drivers/net/wireless/realtek/rtlwifi/rtl8192cu/trx.c:514:30
 index 10 is out of range for type 'rtl_tid_data [9]'

Fixes: 8ca4cdef9329 ("wifi: rtlwifi: rtl8192cu: Fix TX aggregation")
Signed-off-by: Morning Star <alexbestoso@gmail.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/1764232628-13625-1-git-send-email-pkshih@realtek.com
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/trx.c

index aa702ba7c9f5402b9cef50fabc46be22f3d018df..d6c35e8d02a58c23b97fe3cb35bc70b802ff6e8b 100644 (file)
@@ -511,7 +511,8 @@ void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw,
        if (sta) {
                sta_entry = (struct rtl_sta_info *)sta->drv_priv;
                tid = ieee80211_get_tid(hdr);
-               agg_state = sta_entry->tids[tid].agg.agg_state;
+               if (tid < MAX_TID_COUNT)
+                       agg_state = sta_entry->tids[tid].agg.agg_state;
                ampdu_density = sta->deflink.ht_cap.ampdu_density;
        }