Эх сурвалжийг харах

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)
Manjeet Singh 8 жил өмнө
parent
commit
01327cc3ec

+ 6 - 0
core/hdd/src/wlan_hdd_main.c

@@ -5008,6 +5008,12 @@ static void hdd_bus_bw_compute_cbk(void *priv)
 		if (adapterNode->pAdapter == NULL)
 			continue;
 		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 ||
 		     adapter->device_mode == QDF_P2P_CLIENT_MODE) &&