diff --git a/components/tdls/core/src/wlan_tdls_ct.c b/components/tdls/core/src/wlan_tdls_ct.c index 29a60701e8c6..8fd9b5d8aeec 100644 --- a/components/tdls/core/src/wlan_tdls_ct.c +++ b/components/tdls/core/src/wlan_tdls_ct.c @@ -1324,18 +1324,20 @@ void tdls_teardown_connections(struct tdls_link_teardown *tdls_teardown) tdls_vdev = tdls_get_vdev(tdls_teardown->psoc, WLAN_TDLS_SB_ID); if (!tdls_vdev) { tdls_err("Unable get the vdev"); - return; + goto fail_vdev; } tdls_vdev_obj = wlan_vdev_get_tdls_vdev_obj(tdls_vdev); if (!tdls_vdev_obj) { tdls_err("vdev priv is NULL"); - return; + goto fail_tdls_vdev; } tdls_disable_offchan_and_teardown_links(tdls_vdev); qdf_event_set(&tdls_vdev_obj->tdls_teardown_comp); +fail_tdls_vdev: wlan_objmgr_vdev_release_ref(tdls_vdev, WLAN_TDLS_SB_ID); +fail_vdev: wlan_objmgr_psoc_release_ref(tdls_teardown->psoc, WLAN_TDLS_SB_ID); qdf_mem_free(tdls_teardown); }