summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaveen Rawat <naveenrawat@codeaurora.org>2017-01-27 18:01:17 -0800
committerqcabuildsw <qcabuildsw@localhost>2017-01-30 12:42:01 -0800
commit7b2a81ba86ee73cc0cfc483b6b2a1875c361de01 (patch)
treebcd05bd1259e51e65f05e94f151149ad41efb17a
parentd5b44d34d95f0eff67341447ab8e17716ddb3eee (diff)
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
-rw-r--r--core/sme/src/common/sme_api.c9
-rw-r--r--core/sme/src/csr/csr_api_roam.c10
-rw-r--r--core/sme/src/csr/csr_api_scan.c5
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 93c8714026ec..a41ff6c1ce34 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -230,9 +230,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 c4797023df90..cd7e0e8057b0 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -290,7 +290,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 bc3b6a4710c9..9e4ab32d2e63 100644
--- a/core/sme/src/csr/csr_api_scan.c
+++ b/core/sme/src/csr/csr_api_scan.c
@@ -4037,8 +4037,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;
}