summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHanumantha Reddy Pothula <c_hpothu@qti.qualcomm.com>2015-05-13 15:40:33 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-06-21 20:40:53 +0530
commit6e0703b2cc5aab43d4eaf28cbe39b4882e0d5798 (patch)
tree8b7c935c3062bd8de5dae5f248f4d26efa37f89a
parentdbb53f2768a75c6166a9e0bc84622b3832a7bee2 (diff)
qcacld: HDD: Validate adapter's magic number in callbacks
prima to qcacld-2.0 propagation Before accessing adapter context, validate adapter's magic number along with NULL check to confirm that instance of adapter context is valid Change-Id: I3a5d2b79cf0a4e0d938df144546508c52db1154e CRs-Fixed: 837808
-rw-r--r--CORE/HDD/src/wlan_hdd_softap_tx_rx.c6
-rw-r--r--CORE/HDD/src/wlan_hdd_tx_rx.c23
2 files changed, 9 insertions, 20 deletions
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index fa9984469312..2ac0026ec19a 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -1015,10 +1015,8 @@ VOS_STATUS hdd_softap_tx_low_resource_cbk( vos_pkt_t *pVosPacket,
hdd_adapter_t* pAdapter = (hdd_adapter_t *)userData;
v_U8_t STAId = WLAN_MAX_STA_COUNT;
- if(pAdapter == NULL)
- {
- VOS_TRACE( VOS_MODULE_ID_HDD_SAP_DATA, VOS_TRACE_LEVEL_ERROR,
- "%s: HDD adapter context is Null", __func__);
+ if ((pAdapter == NULL) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
+ hddLog(LOGE, FL("Invalid adapter %p"), pAdapter);
return VOS_STATUS_E_FAILURE;
}
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index b54989816c59..1ac4cca5f6da 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1310,15 +1310,10 @@ VOS_STATUS hdd_tx_complete_cbk( v_VOID_t *vosContext,
pHddCtx = (hdd_context_t *)vos_get_context( VOS_MODULE_ID_HDD, vosContext );
//Get the Adapter context.
pAdapter = hdd_get_adapter(pHddCtx,WLAN_HDD_INFRA_STATION);
- if(pAdapter == NULL)
- {
- VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
- "%s: HDD adapter context is Null", __func__);
- }
+ if((pAdapter == NULL) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic))
+ hddLog(LOG1, FL("Invalid adapter %p"), pAdapter);
else
- {
++pAdapter->hdd_stats.hddTxRxStats.txCompleted;
- }
kfree_skb((struct sk_buff *)pOsPkt);
@@ -1388,10 +1383,8 @@ VOS_STATUS hdd_tx_fetch_packet_cbk( v_VOID_t *vosContext,
}
pAdapter = pHddCtx->sta_to_adapter[*pStaId];
- if ((NULL == pAdapter) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic))
- {
- VOS_TRACE( VOS_MODULE_ID_HDD_DATA, VOS_TRACE_LEVEL_ERROR,
- FL("pAdapter is NULL %u"), *pStaId);
+ if ((NULL == pAdapter) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
+ hddLog(LOGE, FL("Invalid adapter %p staId %u"), pAdapter, *pStaId);
VOS_ASSERT(0);
return VOS_STATUS_E_FAILURE;
}
@@ -1702,10 +1695,8 @@ VOS_STATUS hdd_tx_low_resource_cbk( vos_pkt_t *pVosPacket,
v_SIZE_t size = 0;
hdd_adapter_t* pAdapter = (hdd_adapter_t *)userData;
- if (NULL == pAdapter)
- {
- VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "%s: HDD adapter context is Null", __func__);
+ if ((NULL == pAdapter) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
+ hddLog(LOGE, FL("Invalid adpater %p"), pAdapter);
return VOS_STATUS_E_FAILURE;
}
@@ -1805,7 +1796,7 @@ VOS_STATUS hdd_rx_packet_cbk(v_VOID_t *vosContext,
pAdapter = pHddCtx->sta_to_adapter[staId];
if ((NULL == pAdapter) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
- hddLog(LOGE, FL("invalid adapter or adapter has invalid magic"));
+ hddLog(LOGE, FL("invalid adapter %p for sta Id %d"), pAdapter, staId);
return VOS_STATUS_E_FAILURE;
}