qcacld-3.0: Validate adapter magic during bus bandwidth check
qcacld-2.0 to qcacld-3.0 propagation. hdd_bus_bw_compute_cbk function is responsible for computing bus bandwidth by checking TX/RX stats per HDD adapter after taking them from adapter list. However, it's scheduled on a global timer so the following scenario can arise: 1)At time of scheduling, HDD adapter is valid and is passed. 2)During TX/RX stats check, HDD adapter is freed as a result of interface down. 3)Null hddCtx from adapter is accessed as a result and kernel panic occurs. Thus,validate adapter magic before accessing the hddCtx stored in adapter. Change-Id: If076e122db0538d01140e16305f046e68a86212a CRs-fixed: 1045004 (cherry picked from commit 27254744c270a98d15bb17e2ed48649450070385)
This commit is contained in:

committed by
qcabuildsw

parent
fde0c04dc2
commit
01327cc3ec
@@ -5008,6 +5008,12 @@ static void hdd_bus_bw_compute_cbk(void *priv)
|
|||||||
if (adapterNode->pAdapter == NULL)
|
if (adapterNode->pAdapter == NULL)
|
||||||
continue;
|
continue;
|
||||||
adapter = adapterNode->pAdapter;
|
adapter = adapterNode->pAdapter;
|
||||||
|
/*
|
||||||
|
* Validate magic so we don't end up accessing
|
||||||
|
* an invalid adapter.
|
||||||
|
*/
|
||||||
|
if (adapter->magic != WLAN_HDD_ADAPTER_MAGIC)
|
||||||
|
continue;
|
||||||
|
|
||||||
if ((adapter->device_mode == QDF_STA_MODE ||
|
if ((adapter->device_mode == QDF_STA_MODE ||
|
||||||
adapter->device_mode == QDF_P2P_CLIENT_MODE) &&
|
adapter->device_mode == QDF_P2P_CLIENT_MODE) &&
|
||||||
|
Reference in New Issue
Block a user