[PATCH ath-next] wifi: ath12k: Fix memory leak due to multiple rx_stats allocation
Mahendran P
quic_mahep at quicinc.com
Mon Mar 31 21:29:33 PDT 2025
On 3/27/2025 3:05 AM, Muna Sinada wrote:
> From: Sidhanta Sahu <sidhanta.sahu at oss.qualcomm.com>
>
> rx_stats for each arsta is allocated when adding a station.
> arsta->rx_stats will be freed when a station is removed.
>
> Redundant allocations are occurring when the same station is added
> multiple times. This causes ath12k_mac_station_add() to be called
> multiple times, and rx_stats is allocated each time. As a result there
> is memory leaks.
>
> Prevent multiple allocations of rx_stats when ath12k_mac_station_add()
> is called repeatedly by checking if rx_stats is already allocated
> before allocating again. Allocate arsta->rx_stats if arsta->rx_stats
> is NULL respectively.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>
> Signed-off-by: Sidhanta Sahu <sidhanta.sahu at oss.qualcomm.com>
> Signed-off-by: Muna Sinada <muna.sinada at oss.qualcomm.com>
> ---
> drivers/net/wireless/ath/ath12k/mac.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index 842eda56c8b1..f157a85111d9 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -5663,10 +5663,13 @@ static int ath12k_mac_station_add(struct ath12k *ar,
> ar->max_num_stations);
> goto exit;
> }
> - arsta->rx_stats = kzalloc(sizeof(*arsta->rx_stats), GFP_KERNEL);
> +
> if (!arsta->rx_stats) {
> - ret = -ENOMEM;
> - goto dec_num_station;
> + arsta->rx_stats = kzalloc(sizeof(*arsta->rx_stats), GFP_KERNEL);
> + if (!arsta->rx_stats) {
> + ret = -ENOMEM;
> + goto dec_num_station;
> + }
> }
>
> peer_param.vdev_id = arvif->vdev_id;
>
> base-commit: c0dd3f4f70918cbcdd8da611811036a91b7dce33
Reviewed-by: Mahendran P <quic_mahep at quicinc.com>
More information about the ath12k
mailing list