]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: ath12k: fix array out-of-bound access in SoC stats
authorKarthikeyan Periyasamy <quic_periyasa@quicinc.com>
Thu, 4 Jul 2024 07:08:10 +0000 (12:38 +0530)
committerKalle Valo <quic_kvalo@quicinc.com>
Wed, 10 Jul 2024 16:28:26 +0000 (19:28 +0300)
Currently, the ath12k_soc_dp_stats::hal_reo_error array is defined with a
maximum size of DP_REO_DST_RING_MAX. However, the ath12k_dp_rx_process()
function access ath12k_soc_dp_stats::hal_reo_error using the REO
destination SRNG ring ID, which is incorrect. SRNG ring ID differ from
normal ring ID, and this usage leads to out-of-bounds array access. To
fix this issue, modify ath12k_dp_rx_process() to use the normal ring ID
directly instead of the SRNG ring ID to avoid out-of-bounds array access.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1

Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://patch.msgid.link/20240704070811.4186543-2-quic_periyasa@quicinc.com
drivers/net/wireless/ath/ath12k/dp_rx.c

index 14236d0a0c89db5a4849c52410765e1ce7ef8920..91e3393f7b5f40c5f60a5b5972ba7622ae616383 100644 (file)
@@ -2681,7 +2681,7 @@ try_again:
                if (push_reason !=
                    HAL_REO_DEST_RING_PUSH_REASON_ROUTING_INSTRUCTION) {
                        dev_kfree_skb_any(msdu);
-                       ab->soc_stats.hal_reo_error[dp->reo_dst_ring[ring_id].ring_id]++;
+                       ab->soc_stats.hal_reo_error[ring_id]++;
                        continue;
                }