qcacld-3.0: Fix tdls vdev ref issue for race condition
When wpa_supplicant sent tdls mgmt frame during sta disconnecting for NUD failure, scheduler thread clear MLO flag of vdev0, in wlan_key_get_link_vdev, wlan_vdev_mlme_is_mlo_vdev(vdev0) return true, in wlan_key_put_link_vdev, wlan_vdev_mlme_is_mlo_vdev(vdev0) return false, WLAN_OSIF_TDLS_ID vdev ref count is released in both wlan_key_get_link_vdev and wlan_key_put_link_vdev, while WLAN_MLO_MGR_ID vdev ref count isn't released, assert will happen. To fix it, add check in os_if, if vdev not up, reject tdls frame to avoid such race condition issue. Change-Id: I90e60c95888cc63e57d0bd0b75c570d8d677cbaa CRs-Fixed: 3572133
Este commit está contenido en:

cometido por
Rahul Choudhary

padre
9618136de3
commit
263d0d2296
@@ -1225,6 +1225,13 @@ wlan_cfg80211_tdls_mgmt_mlo(struct hdd_adapter *adapter, const uint8_t *peer,
|
||||
if (!vdev)
|
||||
return -EINVAL;
|
||||
|
||||
/* STA should be connected before sending any TDLS frame */
|
||||
if (wlan_vdev_is_up(vdev) != QDF_STATUS_SUCCESS) {
|
||||
osif_err("STA is not connected");
|
||||
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_TDLS_ID);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
is_mlo_vdev = wlan_vdev_mlme_is_mlo_vdev(vdev);
|
||||
if (is_mlo_vdev) {
|
||||
tdls_link_vdev =
|
||||
|
Referencia en una nueva incidencia
Block a user