From b1e1ddd414aa2e804cec0ff689eceff4702daee9 Mon Sep 17 00:00:00 2001 From: Jiachao Wu Date: Mon, 21 May 2018 12:04:15 +0800 Subject: [PATCH] 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 --- core/hdd/src/wlan_hdd_hostapd.c | 4 ++++ core/hdd/src/wlan_hdd_main.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 5511a639860c..828eabdd2d12 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/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); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 17432661be40..de49dddec286 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/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. */