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
This commit is contained in:
Naveen Rawat 2017-01-27 18:01:17 -08:00 • committed by qcabuildsw
commit 2096954450
3 changed files with 20 additions and 4 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;
}