diff --git a/lib/thread/thread.c b/lib/thread/thread.c index aa0c319836..d91cffa84e 100644 --- a/lib/thread/thread.c +++ b/lib/thread/thread.c @@ -669,6 +669,10 @@ thread_poll(struct spdk_thread *thread, uint32_t max_msgs, uint64_t now) TAILQ_FOREACH_SAFE(poller, &thread->timed_pollers, tailq, tmp) { int timer_rc = 0; + if (now < poller->next_run_tick) { + break; + } + if (poller->state == SPDK_POLLER_STATE_UNREGISTERED) { TAILQ_REMOVE(&thread->timed_pollers, poller, tailq); free(poller); @@ -680,10 +684,6 @@ thread_poll(struct spdk_thread *thread, uint32_t max_msgs, uint64_t now) continue; } - if (now < poller->next_run_tick) { - break; - } - poller->state = SPDK_POLLER_STATE_RUNNING; timer_rc = poller->fn(poller->arg);