wlan: protect ULA callback against adapter state changes

An issue was observed where when wlan_hdd_ula_done_cb() was invoked
the completion variable used to synchronize threads was in an
uninitialized state, leading to a crash.  Fix this by using a new
completion variable that will not be cleared when the adapter changes
state.  In addition add additional protection to make sure the adapter
is valid before referencing the completion variable, and add logging
when the wait_for_completion() times out so we know when the driver is
in an inconsistent state.

Change-Id: Id7687792e8e9aad20b32754f989fa3a41ab7cc85
CRs-fixed: 455822
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 7a4db4d..c3ca3cf 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -707,6 +707,9 @@
    /* Completion variable for remain on channel ready */
    struct completion rem_on_chan_ready_event;
 
+   /* Completion variable for Upper Layer Authentication */
+   struct completion ula_complete;
+
 #ifdef FEATURE_WLAN_TDLS
    struct completion tdls_add_station_comp;
    struct completion tdls_mgmt_comp;