From 9d9cbb6762e6923d318c08237e1175c0bb430640 Mon Sep 17 00:00:00 2001 From: Tallapragada Kalyan Date: Mon, 26 Feb 2018 17:39:12 +0530 Subject: [PATCH] qcacmn: Fix memory leak during vdev detach in STA mode Vdev detach does not happen till all the peers associated the vdev are deleted. because of DBDC repeater feature, we are creating a self peer even for STA VAP and were not deleteing it properly causing a memory leak. This change fixes this issue. Change-Id: I39d271bef5d5adc6e94333a3fbc483bdb7067f27 CRs-Fixed: 2193590 --- dp/wifi3.0/dp_main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 6857257662bd..e1fbf6a37df3 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -3182,6 +3182,9 @@ static void dp_vdev_detach_wifi3(struct cdp_vdev *vdev_handle, /* remove the vdev from its parent pdev's list */ TAILQ_REMOVE(&pdev->vdev_list, vdev, vdev_list_elem); + if (wlan_op_mode_sta == vdev->opmode) + dp_peer_delete_wifi3(vdev->vap_bss_peer, 0); + /* * Use peer_ref_mutex while accessing peer_list, in case * a peer is in the process of being removed from the list. @@ -3209,9 +3212,6 @@ static void dp_vdev_detach_wifi3(struct cdp_vdev *vdev_handle, QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH, FL("deleting vdev object %pK (%pM)"), vdev, vdev->mac_addr.raw); - if (wlan_op_mode_sta == vdev->opmode) - dp_peer_delete_wifi3(vdev->vap_bss_peer, 0); - qdf_mem_free(vdev); if (callback)