فهرست منبع

qcacld-3.0: Changes to fix compilation warnings

Add changes to fix compilation warning related to
frame-larger-than flag. Value of this flag is set by
CONFIG_FRAME_WARN in kernel config.

Change-Id: I0d4d55c141572c9da3a459e79073b99fc5d6ea67
CRs-Fixed: 2035710
Kapil Gupta 7 سال پیش
والد
کامیت
ffa260296f
3فایلهای تغییر یافته به همراه91 افزوده شده و 59 حذف شده
  1. 24 8
      core/hdd/src/wlan_hdd_nan_datapath.c
  2. 29 19
      core/sme/src/csr/csr_api_roam.c
  3. 38 32
      core/sme/src/csr/csr_tdls_process.c

+ 24 - 8
core/hdd/src/wlan_hdd_nan_datapath.c

@@ -865,13 +865,19 @@ static void hdd_ndp_iface_create_rsp_handler(hdd_adapter_t *adapter,
 	uint32_t create_reason = NDP_NAN_DATA_IFACE_CREATE_FAILED;
 	hdd_station_ctx_t *sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
 	struct qdf_mac_addr bc_mac_addr = QDF_MAC_ADDR_BROADCAST_INITIALIZER;
-	tCsrRoamInfo roam_info = {0};
+	tCsrRoamInfo *roam_info;
 	tSirBssDescription tmp_bss_descp = {0};
 
 	ENTER();
 
+	roam_info = qdf_mem_malloc(sizeof(*roam_info));
+	if (!roam_info) {
+		hdd_err("failed to allocate memory");
+		return;
+	}
 	if (wlan_hdd_validate_context(hdd_ctx))
 		/* No way the driver can send response back to user space */
+		qdf_mem_free(roam_info);
 		return;
 
 	if (ndi_rsp) {
@@ -968,11 +974,12 @@ static void hdd_ndp_iface_create_rsp_handler(hdd_adapter_t *adapter,
 
 	sta_ctx->broadcast_staid = ndi_rsp->sta_id;
 	hdd_save_peer(sta_ctx, sta_ctx->broadcast_staid, &bc_mac_addr);
-	hdd_roam_register_sta(adapter, &roam_info,
+	hdd_roam_register_sta(adapter, roam_info,
 				sta_ctx->broadcast_staid,
 				&bc_mac_addr, &tmp_bss_descp);
 	hdd_ctx->sta_to_adapter[sta_ctx->broadcast_staid] = adapter;
 
+	qdf_mem_free(roam_info);
 
 	EXIT();
 	return;
@@ -981,6 +988,7 @@ nla_put_failure:
 	kfree_skb(vendor_event);
 close_ndi:
 	hdd_close_ndi(adapter);
+	qdf_mem_free(roam_info);
 	return;
 }
 
@@ -1219,15 +1227,21 @@ static void hdd_ndp_new_peer_ind_handler(hdd_adapter_t *adapter,
 	struct sme_ndp_peer_ind *new_peer_ind = ind_params;
 	hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 	tSirBssDescription tmp_bss_descp = {0};
-	tCsrRoamInfo roam_info = {0};
+	tCsrRoamInfo *roam_info;
 	struct nan_datapath_ctx *ndp_ctx = WLAN_HDD_GET_NDP_CTX_PTR(adapter);
 	hdd_station_ctx_t *sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
 
 	ENTER();
 
+	roam_info = qdf_mem_malloc(sizeof(*roam_info));
+	if (!roam_info) {
+		hdd_err("failed to allocate memory");
+		return;
+	}
+
 	if (NULL == ind_params) {
 		hdd_err("Invalid new NDP peer params");
-		return;
+		goto free;
 	}
 	hdd_info("session_id: %d, peer_mac: %pM, sta_id: %d",
 		new_peer_ind->session_id, new_peer_ind->peer_mac_addr.bytes,
@@ -1236,8 +1250,8 @@ static void hdd_ndp_new_peer_ind_handler(hdd_adapter_t *adapter,
 	/* save peer in ndp ctx */
 	if (false == hdd_save_peer(sta_ctx, new_peer_ind->sta_id,
 				   &new_peer_ind->peer_mac_addr)) {
-		hdd_err("Ndp peer table full. cannot save new peer");
-		return;
+		hdd_warn("Ndp peer table full. cannot save new peer");
+		goto free;
 	}
 
 	/* this function is called for each new peer */
@@ -1245,17 +1259,19 @@ static void hdd_ndp_new_peer_ind_handler(hdd_adapter_t *adapter,
 	hdd_info("vdev_id: %d, num_peers: %d", adapter->sessionId,
 		 ndp_ctx->active_ndp_peers);
 
-	hdd_roam_register_sta(adapter, &roam_info, new_peer_ind->sta_id,
+	hdd_roam_register_sta(adapter, roam_info, new_peer_ind->sta_id,
 			    &new_peer_ind->peer_mac_addr, &tmp_bss_descp);
 	hdd_ctx->sta_to_adapter[new_peer_ind->sta_id] = adapter;
 	/* perform following steps for first new peer ind */
 	if (ndp_ctx->active_ndp_peers == 1) {
 		hdd_conn_set_connection_state(adapter,
 				eConnectionState_NdiConnected);
-		hdd_wmm_connect(adapter, &roam_info, eCSR_BSS_TYPE_NDI);
+		hdd_wmm_connect(adapter, roam_info, eCSR_BSS_TYPE_NDI);
 		wlan_hdd_netif_queue_control(adapter,
 				WLAN_WAKE_ALL_NETIF_QUEUE, WLAN_CONTROL_PATH);
 	}
+free:
+	qdf_mem_free(roam_info);
 	EXIT();
 }
 

+ 29 - 19
core/sme/src/csr/csr_api_roam.c

@@ -5652,7 +5652,7 @@ static eCsrJoinState csr_roam_join_next_bss(tpAniSirGlobal mac_ctx,
 	tScanResultList *bss_list =
 		(tScanResultList *) cmd->u.roamCmd.hBSSList;
 	bool done = false;
-	tCsrRoamInfo roam_info, *roam_info_ptr = NULL;
+	tCsrRoamInfo *roam_info = NULL;
 	uint32_t session_id = cmd->sessionId;
 	tCsrRoamSession *session = CSR_GET_SESSION(mac_ctx, session_id);
 	tCsrRoamProfile *profile = &cmd->u.roamCmd.roamProfile;
@@ -5664,8 +5664,12 @@ static eCsrJoinState csr_roam_join_next_bss(tpAniSirGlobal mac_ctx,
 		return eCsrStopRoaming;
 	}
 
-	qdf_mem_set(&roam_info, sizeof(roam_info), 0);
-	qdf_mem_copy(&roam_info.bssid, &session->joinFailStatusCode.bssId,
+	roam_info = qdf_mem_malloc(sizeof (*roam_info));
+	if (!roam_info) {
+		sme_err("failed to allocate memory");
+		return eCsrStopRoaming;
+	}
+	qdf_mem_copy(&roam_info->bssid, &session->joinFailStatusCode.bssId,
 			sizeof(tSirMacAddr));
 	/*
 	 * When handling AP's capability change, continue to associate
@@ -5696,11 +5700,10 @@ static eCsrJoinState csr_roam_join_next_bss(tpAniSirGlobal mac_ctx,
 			 * We need to indicate to HDD that we
 			 * are done with this one.
 			 */
-			roam_info.pBssDesc = cmd->u.roamCmd.pLastRoamBss;
+			roam_info->pBssDesc = cmd->u.roamCmd.pLastRoamBss;
 			join_status = &session->joinFailStatusCode;
-			roam_info.statusCode = join_status->statusCode;
-			roam_info.reasonCode = join_status->reasonCode;
-			roam_info_ptr = &roam_info;
+			roam_info->statusCode = join_status->statusCode;
+			roam_info->reasonCode = join_status->reasonCode;
 		}
 		done = csr_roam_select_bss(mac_ctx,
 				cmd->u.roamCmd.pRoamBssEntry, &result,
@@ -5709,11 +5712,9 @@ static eCsrJoinState csr_roam_join_next_bss(tpAniSirGlobal mac_ctx,
 		if (done)
 			goto end;
 	}
-	if (!roam_info_ptr)
-		roam_info_ptr = &roam_info;
-	roam_info_ptr->u.pConnectedProfile = &session->connectedProfile;
+	roam_info->u.pConnectedProfile = &session->connectedProfile;
 
-	csr_roam_join_handle_profile(mac_ctx, session_id, cmd, roam_info_ptr,
+	csr_roam_join_handle_profile(mac_ctx, session_id, cmd, roam_info,
 		&roam_state, result, scan_result);
 end:
 	if ((eCsrStopRoaming == roam_state) && CSR_IS_INFRASTRUCTURE(profile) &&
@@ -5727,13 +5728,13 @@ end:
 		 * Complete the last assoc attempte as a
 		 * new one is about to be tried
 		 */
-		roam_info_ptr = &roam_info;
-		roam_info_ptr->pProfile = profile;
+		roam_info->pProfile = profile;
 		csr_roam_call_callback(mac_ctx, session_id,
-			roam_info_ptr, cmd->u.roamCmd.roamId,
+			roam_info, cmd->u.roamCmd.roamId,
 			eCSR_ROAM_ASSOCIATION_COMPLETION,
 			eCSR_ROAM_RESULT_NOT_ASSOCIATED);
 	}
+	qdf_mem_free(roam_info);
 
 	return roam_state;
 }
@@ -9534,7 +9535,7 @@ void csr_roam_roaming_state_disassoc_rsp_processor(tpAniSirGlobal pMac,
 						   tSirSmeDisassocRsp *pSmeRsp)
 {
 	tScanResultHandle hBSSList;
-	tCsrRoamInfo roamInfo;
+	tCsrRoamInfo *roamInfo;
 	tCsrScanResultFilter *pScanFilter = NULL;
 	uint32_t roamId = 0;
 	tCsrRoamProfile *pCurRoamProfile = NULL;
@@ -9560,6 +9561,13 @@ void csr_roam_roaming_state_disassoc_rsp_processor(tpAniSirGlobal pMac,
 		return;
 	}
 
+	roamInfo = qdf_mem_malloc(sizeof(*roamInfo));
+
+	if (!roamInfo) {
+		sme_err("failed to allocate memory");
+		return;
+	}
+
 	if (CSR_IS_ROAM_SUBSTATE_DISASSOC_NO_JOIN(pMac, sessionId)) {
 		sme_debug("***eCsrNothingToJoin***");
 		csr_roam_complete(pMac, eCsrNothingToJoin, NULL, sessionId);
@@ -9593,12 +9601,12 @@ void csr_roam_roaming_state_disassoc_rsp_processor(tpAniSirGlobal pMac,
 		csr_dequeue_command(pMac);
 
 		/* notify HDD about handoff and provide the BSSID too */
-		roamInfo.reasonCode = eCsrRoamReasonBetterAP;
+		roamInfo->reasonCode = eCsrRoamReasonBetterAP;
 
-		qdf_copy_macaddr(&roamInfo.bssid,
+		qdf_copy_macaddr(&roamInfo->bssid,
 			pNeighborRoamInfo->csrNeighborRoamProfile.BSSIDs.bssid);
 
-		csr_roam_call_callback(pMac, sessionId, &roamInfo, 0,
+		csr_roam_call_callback(pMac, sessionId, roamInfo, 0,
 				       eCSR_ROAM_ROAMING_START,
 				       eCSR_ROAM_RESULT_NONE);
 
@@ -9631,12 +9639,13 @@ void csr_roam_roaming_state_disassoc_rsp_processor(tpAniSirGlobal pMac,
 			qdf_mem_free(pCurRoamProfile);
 			csr_free_scan_filter(pMac, pScanFilter);
 			qdf_mem_free(pScanFilter);
+			qdf_mem_free(roamInfo);
 			return;
 		}
 		csr_scan_result_purge(pMac, hBSSList);
 
 POST_ROAM_FAILURE:
-		csr_post_roam_failure(pMac, sessionId, &roamInfo,
+		csr_post_roam_failure(pMac, sessionId, roamInfo,
 			      pScanFilter, pCurRoamProfile);
 	} /* else if ( CSR_IS_ROAM_SUBSTATE_DISASSOC_HO( pMac ) ) */
 	else if (CSR_IS_ROAM_SUBSTATE_REASSOC_FAIL(pMac, sessionId)) {
@@ -9665,6 +9674,7 @@ POST_ROAM_FAILURE:
 		/* We are not done yet. Get the data and continue roaming */
 		csr_roam_reissue_roam_command(pMac, sessionId);
 	}
+	qdf_mem_free(roamInfo);
 }
 
 static void csr_roam_roaming_state_deauth_rsp_processor(tpAniSirGlobal pMac,

+ 38 - 32
core/sme/src/csr/csr_tdls_process.c

@@ -665,7 +665,7 @@ QDF_STATUS csr_tdls_process_link_establish(tpAniSirGlobal pMac, tSmeCmd *cmd)
 QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 			      void *pMsgBuf)
 {
-	tCsrRoamInfo roamInfo = { 0 };
+	tCsrRoamInfo *roamInfo;
 	eCsrRoamResult roamResult;
 	tSirSmeRsp *sme_rsp = pMsgBuf;
 	tSirTdlsAddStaRsp *addStaRsp = (tSirTdlsAddStaRsp *) pMsgBuf;
@@ -679,6 +679,11 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 		(tSirTdlsLinkEstablishReqRsp *) pMsgBuf;
 	tSirTdlsEventnotify *tevent = (tSirTdlsEventnotify *) pMsgBuf;
 
+	roamInfo = qdf_mem_malloc(sizeof(*roamInfo));
+	if (!roamInfo) {
+		sme_err("failed to allocate memory");
+		return QDF_STATUS_E_FAILURE;
+	}
 	switch (msgType) {
 	case eWNI_SME_TDLS_SEND_MGMT_RSP:
 	{
@@ -695,7 +700,7 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 		if (eSIR_SME_SUCCESS != msg->statusCode) {
 			/* Tx failed, so there wont be any ack confirmation*/
 			/* Indicate ack failure to upper layer */
-			roamInfo.reasonCode = 0;
+			roamInfo->reasonCode = 0;
 			csr_roam_call_callback(pMac, msg->sessionId,
 					&roam_info, 0,
 					eCSR_ROAM_RESULT_MGMT_TX_COMPLETE_IND,
@@ -704,11 +709,11 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 		break;
 	}
 	case eWNI_SME_TDLS_ADD_STA_RSP:
-		qdf_copy_macaddr(&roamInfo.peerMac, &addStaRsp->peermac);
-		roamInfo.staId = addStaRsp->staId;
-		roamInfo.ucastSig = addStaRsp->ucastSig;
-		roamInfo.bcastSig = addStaRsp->bcastSig;
-		roamInfo.statusCode = addStaRsp->statusCode;
+		qdf_copy_macaddr(&roamInfo->peerMac, &addStaRsp->peermac);
+		roamInfo->staId = addStaRsp->staId;
+		roamInfo->ucastSig = addStaRsp->ucastSig;
+		roamInfo->bcastSig = addStaRsp->bcastSig;
+		roamInfo->statusCode = addStaRsp->statusCode;
 		/*
 		 * register peer with TL, we have to go through HDD as
 		 * this is the only way to register any STA with TL.
@@ -718,7 +723,7 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 		else    /* addStaRsp->tdlsAddOper must be TDLS_OPER_UPDATE */
 			roamResult = eCSR_ROAM_RESULT_UPDATE_TDLS_PEER;
 		csr_roam_call_callback(pMac, addStaRsp->sessionId,
-				&roamInfo, 0, eCSR_ROAM_TDLS_STATUS_UPDATE,
+				roamInfo, 0, eCSR_ROAM_TDLS_STATUS_UPDATE,
 				roamResult);
 
 		/* remove pending eSmeCommandTdlsDiscovery command */
@@ -726,15 +731,15 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 					addStaRsp->sessionId);
 		break;
 	case eWNI_SME_TDLS_DEL_STA_RSP:
-		qdf_copy_macaddr(&roamInfo.peerMac, &delStaRsp->peermac);
-		roamInfo.staId = delStaRsp->staId;
-		roamInfo.statusCode = delStaRsp->statusCode;
+		qdf_copy_macaddr(&roamInfo->peerMac, &delStaRsp->peermac);
+		roamInfo->staId = delStaRsp->staId;
+		roamInfo->statusCode = delStaRsp->statusCode;
 		/*
 		 * register peer with TL, we have to go through HDD as
 		 * this is the only way to register any STA with TL.
 		 */
 		csr_roam_call_callback(pMac, delStaRsp->sessionId,
-				&roamInfo, 0,
+				roamInfo, 0,
 				eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_DELETE_TDLS_PEER);
 
@@ -742,14 +747,14 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 					delStaRsp->sessionId);
 		break;
 	case eWNI_SME_TDLS_DEL_STA_IND:
-		qdf_copy_macaddr(&roamInfo.peerMac,
+		qdf_copy_macaddr(&roamInfo->peerMac,
 				 &pSirTdlsDelStaInd->peermac);
-		roamInfo.staId = pSirTdlsDelStaInd->staId;
-		roamInfo.reasonCode = pSirTdlsDelStaInd->reasonCode;
+		roamInfo->staId = pSirTdlsDelStaInd->staId;
+		roamInfo->reasonCode = pSirTdlsDelStaInd->reasonCode;
 
 		/* Sending the TEARDOWN indication to HDD. */
 		csr_roam_call_callback(pMac,
-				pSirTdlsDelStaInd->sessionId, &roamInfo,
+				pSirTdlsDelStaInd->sessionId, roamInfo,
 				0, eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_TEARDOWN_TDLS_PEER_IND);
 		break;
@@ -757,24 +762,24 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 		/* Sending the TEARDOWN indication to HDD. */
 		csr_roam_call_callback(pMac,
 				pSirTdlsDelAllPeerInd->sessionId,
-				&roamInfo, 0,
+				roamInfo, 0,
 				eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_DELETE_ALL_TDLS_PEER_IND);
 		break;
 	case eWNI_SME_MGMT_FRM_TX_COMPLETION_IND:
-		roamInfo.reasonCode =
+		roamInfo->reasonCode =
 			tdls_tx_comp_ind->txCompleteStatus;
 
 		csr_roam_call_callback(pMac,
 				tdls_tx_comp_ind->sessionId,
-				&roamInfo, 0,
+				roamInfo, 0,
 				eCSR_ROAM_RESULT_MGMT_TX_COMPLETE_IND,
 				0);
 		break;
 	case eWNI_SME_TDLS_LINK_ESTABLISH_RSP:
 		csr_roam_call_callback(pMac,
 				linkEstablishReqRsp->sessionId,
-				&roamInfo, 0,
+				roamInfo, 0,
 				eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_LINK_ESTABLISH_REQ_RSP);
 		/* remove pending eSmeCommandTdlsLinkEstablish command */
@@ -782,56 +787,57 @@ QDF_STATUS tdls_msg_processor(tpAniSirGlobal pMac, uint16_t msgType,
 				linkEstablishReqRsp->sessionId);
 		break;
 	case eWNI_SME_TDLS_SHOULD_DISCOVER:
-		qdf_copy_macaddr(&roamInfo.peerMac, &tevent->peermac);
-		roamInfo.reasonCode = tevent->peer_reason;
+		qdf_copy_macaddr(&roamInfo->peerMac, &tevent->peermac);
+		roamInfo->reasonCode = tevent->peer_reason;
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
 				"%s: eWNI_SME_TDLS_SHOULD_DISCOVER for peer mac: "
 				MAC_ADDRESS_STR " peer_reason: %d",
 				__func__, MAC_ADDR_ARRAY(tevent->peermac.bytes),
 				tevent->peer_reason);
-		csr_roam_call_callback(pMac, tevent->sessionId, &roamInfo,
+		csr_roam_call_callback(pMac, tevent->sessionId, roamInfo,
 				0, eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_TDLS_SHOULD_DISCOVER);
 		break;
 	case eWNI_SME_TDLS_SHOULD_TEARDOWN:
-		qdf_copy_macaddr(&roamInfo.peerMac, &tevent->peermac);
-		roamInfo.reasonCode = tevent->peer_reason;
+		qdf_copy_macaddr(&roamInfo->peerMac, &tevent->peermac);
+		roamInfo->reasonCode = tevent->peer_reason;
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
 				"%s: eWNI_SME_TDLS_SHOULD_TEARDOWN for peer mac: "
 				MAC_ADDRESS_STR " peer_reason: %d",
 				__func__, MAC_ADDR_ARRAY(tevent->peermac.bytes),
 				tevent->peer_reason);
-		csr_roam_call_callback(pMac, tevent->sessionId, &roamInfo,
+		csr_roam_call_callback(pMac, tevent->sessionId, roamInfo,
 				0, eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_TDLS_SHOULD_TEARDOWN);
 		break;
 	case eWNI_SME_TDLS_PEER_DISCONNECTED:
-		qdf_copy_macaddr(&roamInfo.peerMac, &tevent->peermac);
-		roamInfo.reasonCode = tevent->peer_reason;
+		qdf_copy_macaddr(&roamInfo->peerMac, &tevent->peermac);
+		roamInfo->reasonCode = tevent->peer_reason;
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
 				"%s: eWNI_SME_TDLS_PEER_DISCONNECTED for peer mac: "
 				MAC_ADDRESS_STR " peer_reason: %d",
 				__func__, MAC_ADDR_ARRAY(tevent->peermac.bytes),
 				tevent->peer_reason);
-		csr_roam_call_callback(pMac, tevent->sessionId, &roamInfo,
+		csr_roam_call_callback(pMac, tevent->sessionId, roamInfo,
 				0, eCSR_ROAM_TDLS_STATUS_UPDATE,
 				eCSR_ROAM_RESULT_TDLS_SHOULD_PEER_DISCONNECTED);
 		break;
 	case eWNI_SME_TDLS_CONNECTION_TRACKER_NOTIFICATION:
-		qdf_copy_macaddr(&roamInfo.peerMac, &tevent->peermac);
-		roamInfo.reasonCode = tevent->peer_reason;
+		qdf_copy_macaddr(&roamInfo->peerMac, &tevent->peermac);
+		roamInfo->reasonCode = tevent->peer_reason;
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
 			  "%s: eWNI_SME_TDLS_CONNECTION_TRACKER_NOTIFICATION for peer mac: "
 			  MAC_ADDRESS_STR " peer_reason: %d",
 			  __func__, MAC_ADDR_ARRAY(tevent->peermac.bytes),
 			  tevent->peer_reason);
-		csr_roam_call_callback(pMac, tevent->sessionId, &roamInfo,
+		csr_roam_call_callback(pMac, tevent->sessionId, roamInfo,
 				0, eCSR_ROAM_TDLS_STATUS_UPDATE,
 			eCSR_ROAM_RESULT_TDLS_CONNECTION_TRACKER_NOTIFICATION);
 		break;
 	default:
 		break;
 	}
+	qdf_mem_free(roamInfo);
 
 	return QDF_STATUS_SUCCESS;
 }