From 209695445021761f5cc28c4e7fc40ede7f1739ef Mon Sep 17 00:00:00 2001 From: Naveen Rawat Date: Fri, 27 Jan 2017 18:01:17 -0800 Subject: [PATCH] qcacld-3.0: Fix memory leaks for roam profile within csr session Release roam profile within csr session before freeing actual profile. Change-Id: I647570fe590d72752ae83eb37aa151fcc3ce659b CRs-Fixed: 1116636 --- core/sme/src/common/sme_api.c | 9 ++++++--- core/sme/src/csr/csr_api_roam.c | 10 ++++++++++ core/sme/src/csr/csr_api_scan.c | 5 ++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 2b06947321f7..6f08e8e11938 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -229,9 +229,12 @@ static QDF_STATUS sme_process_set_hw_mode_resp(tpAniSirGlobal mac, uint8_t *msg) if (saved_cmd->u.scanCmd.u.scanRequest.SSIDs.SSIDList) qdf_mem_free(saved_cmd->u.scanCmd.u. scanRequest.SSIDs.SSIDList); - if (saved_cmd->u.scanCmd.pToRoamProfile) - qdf_mem_free(saved_cmd->u.scanCmd. - pToRoamProfile); + if (saved_cmd->u.scanCmd.pToRoamProfile) { + csr_release_profile(mac, saved_cmd-> + u.scanCmd.pToRoamProfile); + qdf_mem_free(saved_cmd->u.scanCmd.pToRoamProfile); + saved_cmd->u.scanCmd.pToRoamProfile = NULL; + } if (saved_cmd) { qdf_mem_free(saved_cmd); saved_cmd = NULL; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 70e9dc09d88d..f5d45fad214d 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -288,7 +288,17 @@ static void csr_roam_init_globals(tpAniSirGlobal pMac) static void csr_roam_de_init_globals(tpAniSirGlobal pMac) { + uint8_t i; if (pMac) { + for (i = 0; i < CSR_ROAM_SESSION_MAX; i++) { + if (pMac->roam.roamSession[i].pCurRoamProfile) + csr_release_profile(pMac, + pMac->roam.roamSession[i]. + pCurRoamProfile); + csr_release_profile(pMac, + &pMac->roam.roamSession[i]. + stored_roam_profile.profile); + } pMac->roam.roamSession = NULL; } return; diff --git a/core/sme/src/csr/csr_api_scan.c b/core/sme/src/csr/csr_api_scan.c index b3e7a119372c..b76dd82f269c 100644 --- a/core/sme/src/csr/csr_api_scan.c +++ b/core/sme/src/csr/csr_api_scan.c @@ -4036,8 +4036,11 @@ error: qdf_mem_free(save_cmd->u.roamCmd.pRoamBssEntry); if (save_cmd->u.scanCmd.u.scanRequest.SSIDs.SSIDList) qdf_mem_free(save_cmd->u.scanCmd.u.scanRequest.SSIDs.SSIDList); - if (save_cmd->u.scanCmd.pToRoamProfile) + if (save_cmd->u.scanCmd.pToRoamProfile) { + csr_release_profile(mac_ctx, + save_cmd->u.scanCmd.pToRoamProfile); qdf_mem_free(save_cmd->u.scanCmd.pToRoamProfile); + } return QDF_STATUS_E_FAILURE; }