diff --git a/umac/cmn_services/serialization/src/wlan_serialization_internal.c b/umac/cmn_services/serialization/src/wlan_serialization_internal.c index 8319347d812e..88e0e99c39e4 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_internal.c +++ b/umac/cmn_services/serialization/src/wlan_serialization_internal.c @@ -335,7 +335,7 @@ QDF_STATUS wlan_serialization_activate_cmd( status = cmd_list->cmd.cmd_cb(&cmd_list->cmd, WLAN_SER_CB_ACTIVATE_CMD); - +timer_failed: wlan_serialization_acquire_lock(&pdev_queue->pdev_queue_lock); qdf_atomic_clear_bit(CMD_MARKED_FOR_ACTIVATION, @@ -345,7 +345,6 @@ QDF_STATUS wlan_serialization_activate_cmd( wlan_serialization_release_lock(&pdev_queue->pdev_queue_lock); -timer_failed: if (QDF_IS_STATUS_ERROR(status)) { wlan_serialization_dequeue_cmd(&cmd_list->cmd, SER_ACTIVATION_FAILED, @@ -805,6 +804,11 @@ wlan_serialization_find_and_start_timer(struct wlan_objmgr_psoc *psoc, status = wlan_objmgr_vdev_try_get_ref(ser_timer->cmd->vdev, WLAN_SERIALIZATION_ID); if (QDF_IS_STATUS_ERROR(status)) { + /* + * Set cmd to null so that ref release is not tried for + * vdev when timer is flushed. + */ + ser_timer->cmd = NULL; wlan_serialization_release_lock( &psoc_ser_obj->timer_lock); ser_err("Unbale to get vdev reference");