From b72685beaaa15fd3411947e8336ac58b3368cc72 Mon Sep 17 00:00:00 2001 From: Yeshwanth Sriram Guntuka Date: Tue, 9 Jun 2020 19:54:22 +0530 Subject: [PATCH] qcacmn: Decrement peer ref count on rx hw stats req failure Peer ref count incremented in dp_request_rx_hw_stats is not decremented back in case of error scenarios resulting in possible ref leak and failure in peer deletion. Fix is to invoke dp_peer_unref_delete for error scenarios in dp_request_rx_hw_stats error. Change-Id: I81ecf60a97ff5c804445fd713ed779c478df8521 CRs-Fixed: 2706596 --- dp/wifi3.0/dp_main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 03dec2be15a9..9c4dbdf1f3eb 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -10260,6 +10260,7 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) if (!rx_hw_stats) { dp_err("malloc failed for hw stats structure"); + dp_peer_unref_delete(peer); return QDF_STATUS_E_NOMEM; } @@ -10271,6 +10272,7 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) dp_err("no tid stats sent successfully"); qdf_mem_free(rx_hw_stats); qdf_spin_unlock_bh(&soc->rx_hw_stats_lock); + dp_peer_unref_delete(peer); return QDF_STATUS_E_INVAL; } qdf_atomic_set(&rx_hw_stats->pending_tid_stats_cnt,