diff options
| author | Alexander Motin <mav@FreeBSD.org> | 2021-09-03 01:16:46 +0000 |
|---|---|---|
| committer | Alexander Motin <mav@FreeBSD.org> | 2021-09-03 01:16:46 +0000 |
| commit | 4730a8972b1f4b67bf9ffde8e63ca906ef4c9563 (patch) | |
| tree | c9c7308f1d93bf6cb6bebfcde9f39312a72ecfe0 /sys/kern/subr_taskqueue.c | |
| parent | 7af4475a6e31202a865b1dd3727018659b44470f (diff) | |
Diffstat (limited to 'sys/kern/subr_taskqueue.c')
| -rw-r--r-- | sys/kern/subr_taskqueue.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c index 061361cc06d7..e43b09010761 100644 --- a/sys/kern/subr_taskqueue.c +++ b/sys/kern/subr_taskqueue.c @@ -309,7 +309,6 @@ taskqueue_enqueue_timeout_sbt(struct taskqueue *queue, TQ_LOCK(queue); KASSERT(timeout_task->q == NULL || timeout_task->q == queue, ("Migrated queue")); - KASSERT(!queue->tq_spin, ("Timeout for spin-queue")); timeout_task->q = queue; res = timeout_task->t.ta_pending; if (timeout_task->f & DT_DRAIN_IN_PROGRESS) { @@ -329,6 +328,8 @@ taskqueue_enqueue_timeout_sbt(struct taskqueue *queue, sbt = -sbt; /* Ignore overflow. */ } if (sbt > 0) { + if (queue->tq_spin) + flags |= C_DIRECT_EXEC; callout_reset_sbt(&timeout_task->c, sbt, pr, taskqueue_timeout_func, timeout_task, flags); } |
