]> git.baikalelectronics.ru Git - kernel.git/commitdiff
wifi: ath11k: fix memory leak in WMI firmware stats
authorP Praneesh <quic_ppranees@quicinc.com>
Tue, 6 Jun 2023 09:11:28 +0000 (14:41 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jul 2023 06:50:35 +0000 (08:50 +0200)
[ Upstream commit 6aafa1c2d3e3fea2ebe84c018003f2a91722e607 ]

Memory allocated for firmware pdev, vdev and beacon statistics
are not released during rmmod.

Fix it by calling ath11k_fw_stats_free() function before hardware
unregister.

While at it, avoid calling ath11k_fw_stats_free() while processing
the firmware stats received in the WMI event because the local list
is getting spliced and reinitialised and hence there are no elements
in the list after splicing.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230606091128.14202-1-quic_adisi@quicinc.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath11k/wmi.c

index b19d44b3f5dfb17d825b45748ac24c101ecd114a..cb77dd6ce9665f799ff4e3d8d721801fb226e89b 100644 (file)
@@ -9279,6 +9279,7 @@ void ath11k_mac_destroy(struct ath11k_base *ab)
                if (!ar)
                        continue;
 
+               ath11k_fw_stats_free(&ar->fw_stats);
                ieee80211_free_hw(ar->hw);
                pdev->ar = NULL;
        }
index fad9f8d308a207ab35a402af24deb61fd66bb2df..3e0a47f4a3ebda0b1fd62888123855acbb395303 100644 (file)
@@ -7590,6 +7590,11 @@ complete:
        rcu_read_unlock();
        spin_unlock_bh(&ar->data_lock);
 
+       /* Since the stats's pdev, vdev and beacon list are spliced and reinitialised
+        * at this point, no need to free the individual list.
+        */
+       return;
+
 free:
        ath11k_fw_stats_free(&stats);
 }