qcacmn: Fix ref leaks for vdev and peer

Fix ref leaks for vdev and peer in DP

Change-Id: If75b7dd1d96d211c2360ef65052e19e783c9ea40
CRs-Fixed: 3469902
This commit is contained in:
Kenvish Butani
2023-04-21 15:47:25 +05:30
committed by Madan Koyyalamudi
parent b33c5ecbf3
commit e8753b5a36
3 changed files with 12 additions and 3 deletions

View File

@@ -12120,8 +12120,10 @@ uint16_t dp_get_peer_mac_list(ol_txrx_soc_handle soc, uint8_t vdev_id,
if (!vdev) if (!vdev)
return new_mac_cnt; return new_mac_cnt;
if (limit && (vdev->num_peers > mac_cnt)) if (limit && (vdev->num_peers > mac_cnt)) {
dp_vdev_unref_delete(dp_soc, vdev, DP_MOD_ID_CDP);
return 0; return 0;
}
qdf_spin_lock_bh(&vdev->peer_list_lock); qdf_spin_lock_bh(&vdev->peer_list_lock);
TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) { TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {

View File

@@ -3476,8 +3476,13 @@ dp_clear_peer(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
peer = dp_peer_find_hash_find(soc, peer_addr.bytes, peer = dp_peer_find_hash_find(soc, peer_addr.bytes,
0, DP_VDEV_ALL, DP_MOD_ID_CDP); 0, DP_VDEV_ALL, DP_MOD_ID_CDP);
if (!peer || !peer->valid)
if (!peer)
return QDF_STATUS_E_FAULT; return QDF_STATUS_E_FAULT;
if (!peer->valid) {
dp_peer_unref_delete(peer, DP_MOD_ID_CDP);
return QDF_STATUS_E_FAULT;
}
dp_clear_peer_internal(soc, peer); dp_clear_peer_internal(soc, peer);
dp_peer_unref_delete(peer, DP_MOD_ID_CDP); dp_peer_unref_delete(peer, DP_MOD_ID_CDP);

View File

@@ -472,8 +472,10 @@ static QDF_STATUS dp_vdev_set_monitor_mode(struct cdp_soc_t *dp_soc,
pdev = vdev->pdev; pdev = vdev->pdev;
if (!pdev || !pdev->monitor_pdev) if (!pdev || !pdev->monitor_pdev) {
dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP);
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
}
mon_pdev = pdev->monitor_pdev; mon_pdev = pdev->monitor_pdev;