소스 검색

qcacld-3.0: Reset IEs when SAP failed to be started

In wlan_hdd_cfg80211_start_bss, not all the error path will
reset IEs, which might lead to memory leak of IE buffers.

Update error handling of the function to ensure that it will
cover all error cases.

Change-Id: I44d1eeb4d0100a2f720ea20abd5eacf9fa9bf1fc
CRs-Fixed: 2271222
Min Liu 6 년 전
부모
커밋
8ea5af63c0
1개의 변경된 파일1개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 2
      core/hdd/src/wlan_hdd_hostapd.c

+ 1 - 2
core/hdd/src/wlan_hdd_hostapd.c

@@ -4823,7 +4823,6 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 
 
 	if (0 != wlan_hdd_cfg80211_update_apies(adapter)) {
 	if (0 != wlan_hdd_cfg80211_update_apies(adapter)) {
 		hdd_err("SAP Not able to set AP IEs");
 		hdd_err("SAP Not able to set AP IEs");
-		wlansap_reset_sap_config_add_ie(pConfig, eUPDATE_IE_ALL);
 		ret = -EINVAL;
 		ret = -EINVAL;
 		goto error;
 		goto error;
 	}
 	}
@@ -4918,7 +4917,6 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 	if (!QDF_IS_STATUS_SUCCESS(status)) {
 	if (!QDF_IS_STATUS_SUCCESS(status)) {
 		mutex_unlock(&hdd_ctx->sap_lock);
 		mutex_unlock(&hdd_ctx->sap_lock);
 
 
-		wlansap_reset_sap_config_add_ie(pConfig, eUPDATE_IE_ALL);
 		hdd_set_connection_in_progress(false);
 		hdd_set_connection_in_progress(false);
 		hdd_err("SAP Start Bss fail");
 		hdd_err("SAP Start Bss fail");
 		ret = -EINVAL;
 		ret = -EINVAL;
@@ -4981,6 +4979,7 @@ error:
 	clear_bit(SOFTAP_INIT_DONE, &adapter->event_flags);
 	clear_bit(SOFTAP_INIT_DONE, &adapter->event_flags);
 	qdf_atomic_set(&adapter->session.ap.acs_in_progress, 0);
 	qdf_atomic_set(&adapter->session.ap.acs_in_progress, 0);
 	wlan_hdd_undo_acs(adapter);
 	wlan_hdd_undo_acs(adapter);
+	wlansap_reset_sap_config_add_ie(pConfig, eUPDATE_IE_ALL);
 
 
 free:
 free:
 	/* Enable Roaming after start bss in case of failure/success */
 	/* Enable Roaming after start bss in case of failure/success */