wlan: Validate adapter's magic number in timer handlers
Before accessing adapter context, validate adapter's magic number
along with NULL check to confirm that instance of adapter context
is valid.
Change-Id: If0365c765ad87be53b7e78d8744f0dcfe1a310ab
CRs-Fixed: 803527.
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 414557b..885200d 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -10675,11 +10675,17 @@
/* Iterate over all adapters/devices */
status = hdd_get_front_adapter ( pHddCtx, &pAdapterNode );
+ if ((NULL == pAdapterNode) || (VOS_STATUS_SUCCESS != status))
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ FL("fail to get adapter: %p %d"), pAdapterNode, status);
+ goto end;
+ }
+
do
{
- if( (status == VOS_STATUS_SUCCESS) &&
- pAdapterNode &&
- pAdapterNode->pAdapter)
+ if(pAdapterNode->pAdapter &&
+ WLAN_HDD_ADAPTER_MAGIC == pAdapterNode->pAdapter->magic)
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL,
"restarting the driver(intf:\'%s\' mode:%d :try %d)",
@@ -10704,7 +10710,7 @@
pAdapterNode = pNext;
} while((NULL != pAdapterNode) && (VOS_STATUS_SUCCESS == status));
-
+ end:
/* Free the allocated management frame */
kfree(mgmt);