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;