qcacld-3.0: Check for valid vdev_id in wma_is_roam_in_progress

When kickout event is received from firmware, the function
wma_is_roam_in_progress is called to check the roaming in
progress using vdev_id .

Vdev_id needs to be checked for valid vdev_id prior to
derefencing it.

Change-Id: Ib56895ad73b5dcefe7a0b9f65089306bf42d78eb
CRs-Fixed: 3020665
This commit is contained in:
Deeksha Gupta
2021-08-25 15:57:25 +05:30
committed by Madan Koyyalamudi
parent a9df6f8225
commit b13cd6fade
2 changed files with 7 additions and 0 deletions

View File

@@ -3168,6 +3168,9 @@ bool wma_is_roam_in_progress(uint32_t vdev_id)
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA); tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
enum QDF_OPMODE opmode; enum QDF_OPMODE opmode;
if (!wma_is_vdev_valid(vdev_id))
return false;
if (!wma || !wma->interfaces[vdev_id].vdev) if (!wma || !wma->interfaces[vdev_id].vdev)
return false; return false;

View File

@@ -344,6 +344,10 @@ int wma_peer_sta_kickout_event_handler(void *handle, uint8_t *event,
QDF_MAC_ADDR_REF(macaddr)); QDF_MAC_ADDR_REF(macaddr));
return -EINVAL; return -EINVAL;
} }
if (!wma_is_vdev_valid(vdev_id))
return -EINVAL;
vdev = wma->interfaces[vdev_id].vdev; vdev = wma->interfaces[vdev_id].vdev;
if (!vdev) { if (!vdev) {
wma_err("Not able to find vdev for VDEV_%d", vdev_id); wma_err("Not able to find vdev for VDEV_%d", vdev_id);