Эх сурвалжийг харах

qcacld-3.0: Fix memory leak in SME beacon report request

In sme_rrm_process_beacon_report_req_ind() function
Memory is not freed for error condition, and it
causes leak in the system
Release the memory for all error
conditions.

Change-Id: Ie4447a8f347e2feeb91155cd36872c6a69307db3
CRs-fixed: 2144032
Kabilan Kannan 7 жил өмнө
parent
commit
62d962f25c

+ 9 - 1
core/sme/src/rrm/sme_rrm.c

@@ -690,7 +690,8 @@ static QDF_STATUS sme_rrm_issue_scan_req(tpAniSirGlobal mac_ctx)
 	status = csr_roam_get_session_id_from_bssid(mac_ctx,
 			&sme_rrm_ctx->sessionBssId, &session_id);
 	if (status != QDF_STATUS_SUCCESS) {
-		sme_err("Invalid sme Session ID");
+		sme_err("sme session ID not found for bssid= "MAC_ADDRESS_STR,
+			MAC_ADDR_ARRAY(sme_rrm_ctx->sessionBssId.bytes));
 		return QDF_STATUS_E_FAILURE;
 	}
 
@@ -956,6 +957,13 @@ QDF_STATUS sme_rrm_process_beacon_report_req_ind(tpAniSirGlobal pMac,
 
 	status = sme_rrm_issue_scan_req(pMac);
 
+	if (status != QDF_STATUS_SUCCESS) {
+		if (pSmeRrmContext->channelList.ChannelList) {
+			qdf_mem_free(pSmeRrmContext->channelList.ChannelList);
+			pSmeRrmContext->channelList.ChannelList = NULL;
+		}
+	}
+
 	return status;
 }