diff --git a/umac/tdls/core/src/wlan_tdls_ct.c b/umac/tdls/core/src/wlan_tdls_ct.c index 3b5b554fb83b..2e8b60e8b656 100644 --- a/umac/tdls/core/src/wlan_tdls_ct.c +++ b/umac/tdls/core/src/wlan_tdls_ct.c @@ -1165,7 +1165,7 @@ QDF_STATUS tdls_delete_all_tdls_peers(struct wlan_objmgr_vdev *vdev, { struct wlan_objmgr_peer *peer; struct tdls_del_all_tdls_peers *del_msg; - struct scheduler_msg msg; + struct scheduler_msg msg = {0}; QDF_STATUS status; diff --git a/umac/tdls/core/src/wlan_tdls_main.c b/umac/tdls/core/src/wlan_tdls_main.c index f98d993579c1..5e2bdbf79a20 100644 --- a/umac/tdls/core/src/wlan_tdls_main.c +++ b/umac/tdls/core/src/wlan_tdls_main.c @@ -805,10 +805,8 @@ static void tdls_send_update_to_fw(struct tdls_vdev_priv_obj *tdls_vdev_obj, tdls_state_param_setting_dump(tdls_info_to_fw); status = tdls_update_fw_tdls_state(tdls_soc_obj, tdls_info_to_fw); - if (QDF_STATUS_SUCCESS != status) { - qdf_mem_free(tdls_info_to_fw); + if (QDF_STATUS_SUCCESS != status) goto done; - } if (sta_connect_event) { tdls_soc_obj->set_state_info.set_state_cnt++; @@ -828,6 +826,7 @@ static void tdls_send_update_to_fw(struct tdls_vdev_priv_obj *tdls_vdev_obj, tdls_mgmt_rx_ops(tdls_soc_obj->soc, false); done: + qdf_mem_free(tdls_info_to_fw); tdls_process_session_update(tdls_soc_obj->soc, TDLS_CMD_SESSION_INCREMENT); return; diff --git a/umac/tdls/core/src/wlan_tdls_mgmt.c b/umac/tdls/core/src/wlan_tdls_mgmt.c index f6e27dfd757e..ed8848e09913 100644 --- a/umac/tdls/core/src/wlan_tdls_mgmt.c +++ b/umac/tdls/core/src/wlan_tdls_mgmt.c @@ -225,8 +225,7 @@ static QDF_STATUS tdls_activate_send_mgmt_request( struct wlan_objmgr_peer *peer; struct tdls_soc_priv_obj *tdls_soc_obj; QDF_STATUS status = QDF_STATUS_SUCCESS; - - struct scheduler_msg msg; + struct scheduler_msg msg = {0}; struct tdls_send_mgmt_request *tdls_mgmt_req; if (!action_req || !action_req->vdev) diff --git a/umac/tdls/dispatcher/src/wlan_tdls_tgt_api.c b/umac/tdls/dispatcher/src/wlan_tdls_tgt_api.c index a55f6d134151..cd097dbf86f6 100644 --- a/umac/tdls/dispatcher/src/wlan_tdls_tgt_api.c +++ b/umac/tdls/dispatcher/src/wlan_tdls_tgt_api.c @@ -225,7 +225,7 @@ QDF_STATUS tgt_tdls_mgmt_frame_process_rx_cb( struct tdls_rx_mgmt_frame *rx_mgmt; struct tdls_rx_mgmt_event *rx_mgmt_event; struct tdls_soc_priv_obj *tdls_soc_obj; - struct scheduler_msg msg; + struct scheduler_msg msg = {0}; struct wlan_objmgr_vdev *vdev; uint32_t vdev_id; uint8_t *pdata; diff --git a/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c b/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c index 4412c5878232..2dca630659d0 100644 --- a/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c +++ b/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c @@ -285,7 +285,15 @@ QDF_STATUS ucfg_tdls_psoc_disable(struct wlan_objmgr_psoc *psoc) tdls_err("NULL psoc"); return QDF_STATUS_E_FAILURE; } + status = tgt_tdls_unregister_ev_handler(psoc); + if (QDF_IS_STATUS_ERROR(status)) + tdls_err("Failed to unregister tdls event handler"); + + status = tdls_mgmt_rx_ops(psoc, false); + if (QDF_IS_STATUS_ERROR(status)) + tdls_err("Failed to unregister mgmt rx callback"); + soc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc, WLAN_UMAC_COMP_TDLS); if (!soc_obj) {