qcacld-3.0: Drop packets when vdev_id is invalid

There is a race condition when adapter is deleted after it is
validated in DP rx path and is assigned an invalid vdev id and
eventually invalid net_device.
To fix this, dropping packets if vdev id is found to be invalid
right before assignment to skb->cb.

Change-Id: I4e483363f59a22b45e18da929f749cd9807cc2fc
CRs-Fixed: 3084556
This commit is contained in:
Ananya Gupta 2021-12-01 12:30:12 +05:30 • committed by Madan Koyyalamudi
commit 3eff34087b

View file

@ -2150,6 +2150,13 @@ QDF_STATUS hdd_rx_pkt_thread_enqueue_cbk(void *adapter,
return hdd_adapter->rx_stack(adapter, nbuf_list);
vdev_id = hdd_adapter->vdev_id;
if (vdev_id >= WLAN_UMAC_VDEV_ID_MAX) {
hdd_info_rl("Vdev invalid. Dropping packets");
qdf_nbuf_list_free(nbuf_list);
return QDF_STATUS_E_NETDOWN;
}
head_ptr = nbuf_list;
while (head_ptr) {
qdf_nbuf_cb_update_vdev_id(head_ptr, vdev_id);