Pārlūkot izejas kodu

qcacld-3.0: Clear SOFTAP_INIT_DONE when stop adapter

hdd_stop_adapter frees beacon resouce but doesn't clear SOFTAP_INIT_DONE
flag. If SSR happens in this time, NULL pointer dereference will occur.

Clear flag in hdd_stop_adapter and check NULL pointer when use beacon.

Change-Id: I14be81a4e5fb498948f7ceec9138e9b1c797af1e
CRs-Fixed: 2232511
Jiachao Wu 7 gadi atpakaļ
vecāks
revīzija
b1e1ddd414
2 mainītis faili ar 6 papildinājumiem un 0 dzēšanām
  1. 4 0
      core/hdd/src/wlan_hdd_hostapd.c
  2. 2 0
      core/hdd/src/wlan_hdd_main.c

+ 4 - 0
core/hdd/src/wlan_hdd_hostapd.c

@@ -6852,6 +6852,10 @@ int wlan_hdd_cfg80211_update_apies(struct hdd_adapter *adapter)
 
 	pConfig = &adapter->session.ap.sap_config;
 	beacon = adapter->session.ap.beacon;
+	if (!beacon) {
+		hdd_err("Beacon is NULL !");
+		return -EINVAL;
+	}
 
 	genie = qdf_mem_malloc(MAX_GENIE_LEN);
 

+ 2 - 0
core/hdd/src/wlan_hdd_main.c

@@ -5130,8 +5130,10 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx,
 			/* Reset WNI_CFG_PROBE_RSP Flags */
 			wlan_hdd_reset_prob_rspies(adapter);
 		}
+		clear_bit(SOFTAP_INIT_DONE, &adapter->event_flags);
 		qdf_mem_free(adapter->session.ap.beacon);
 		adapter->session.ap.beacon = NULL;
+
 		/*
 		 * If Do_Not_Break_Stream was enabled clear avoid channel list.
 		 */