wlan: Protect wlan_hdd_tdls_pre_setup function from SSR
Protect wlan_hdd_tdls_pre_setup function from accessing
uninitialized or de-allocated data structures while SSR is in
progress.
Change-Id: Ica9903816e1968a58626e33f2ec401eab182a5af
CRs-Fixed: 707700
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index d6bd7f0..c678554 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -43,7 +43,7 @@
#include <net/ieee80211_radiotap.h>
#include "wlan_hdd_tdls.h"
#include "wlan_hdd_cfg80211.h"
-
+#include "vos_sched.h"
static tANI_S32 wlan_hdd_get_tdls_discovery_peer_cnt(tdlsCtx_t *pHddTdlsCtx);
static tANI_S32 wlan_hdd_tdls_peer_reset_discovery_processed(tdlsCtx_t *pHddTdlsCtx);
@@ -2109,7 +2109,7 @@
mutex_unlock(&pHddCtx->tdls_lock);
}
-static void wlan_hdd_tdls_pre_setup(struct work_struct *work)
+static void __wlan_hdd_tdls_pre_setup(struct work_struct *work)
{
tdlsCtx_t *pHddTdlsCtx =
container_of(work, tdlsCtx_t, implicit_setup);
@@ -2206,6 +2206,16 @@
return;
}
+
+static void wlan_hdd_tdls_pre_setup(struct work_struct *work)
+{
+ vos_ssr_protect(__func__);
+ __wlan_hdd_tdls_pre_setup(work);
+ vos_ssr_unprotect(__func__);
+
+ return;
+}
+
tANI_U32 wlan_hdd_tdls_discovery_sent_cnt(hdd_context_t *pHddCtx)
{
hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL;