]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: ath12k: fix memory leak in ath12k_wifi7_dp_rx_h_verify_tkip_mic()
authorMiaoqing Pan <miaoqing.pan@oss.qualcomm.com>
Tue, 12 May 2026 02:11:08 +0000 (10:11 +0800)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Mon, 1 Jun 2026 16:58:03 +0000 (09:58 -0700)
In ath12k_wifi7_dp_rx_h_verify_tkip_mic(), the call to
ath12k_dp_rx_check_nwifi_hdr_len_valid() may return false when the
NWIFI header length is invalid, causing the function to abort early with
-EINVAL.

When this happens, the error propagates to
ath12k_wifi7_dp_rx_h_defrag(), which clears first_frag by setting it
to NULL. As a result, the corresponding MSDU is no longer referenced
by the defragmentation path and is never freed.

This leads to a memory leak for the affected MSDU on this error path.
Proper cleanup is required to ensure the MSDU is released when header
validation fails during TKIP MIC verification.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3

Fixes: 9a0dddfb30f1 ("wifi: ath12k: Fix invalid data access in ath12k_dp_rx_h_undecap_nwifi")
Signed-off-by: Miaoqing Pan <miaoqing.pan@oss.qualcomm.com>
Reviewed-by: Tamizh Chelvam Raja <tamizh.raja@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20260512021108.2031651-1-miaoqing.pan@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c

index 945680b3ebdfce69e301de20ce62a7105f4bcb2d..a5e290edaa898c3f77b94b217a455ae4a5a105f1 100644 (file)
@@ -1028,8 +1028,10 @@ mic_fail:
        skb_pull(msdu, hal_rx_desc_sz);
 
        if (unlikely(!ath12k_dp_rx_check_nwifi_hdr_len_valid(dp, msdu,
-                                                            rx_info)))
+                                                            rx_info))) {
+               dev_kfree_skb_any(msdu);
                return -EINVAL;
+       }
 
        ath12k_dp_rx_h_ppdu(dp_pdev, rx_info);
        ath12k_dp_rx_h_undecap(dp_pdev, msdu, HAL_ENCRYPT_TYPE_TKIP_MIC, true,