diff options
| author | Naveen Rawat <naveenrawat@codeaurora.org> | 2017-01-27 18:01:17 -0800 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2017-01-30 12:42:01 -0800 |
| commit | 7b2a81ba86ee73cc0cfc483b6b2a1875c361de01 (patch) | |
| tree | bcd05bd1259e51e65f05e94f151149ad41efb17a | |
| parent | d5b44d34d95f0eff67341447ab8e17716ddb3eee (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.c | 9 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 10 | ||||
| -rw-r--r-- | 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 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; } |
