aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/subr_taskqueue.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2021-09-03 01:16:46 +0000
committerAlexander Motin <mav@FreeBSD.org>2021-09-03 01:16:46 +0000
commit4730a8972b1f4b67bf9ffde8e63ca906ef4c9563 (patch)
treec9c7308f1d93bf6cb6bebfcde9f39312a72ecfe0 /sys/kern/subr_taskqueue.c
parent7af4475a6e31202a865b1dd3727018659b44470f (diff)
Diffstat (limited to 'sys/kern/subr_taskqueue.c')
-rw-r--r--sys/kern/subr_taskqueue.c3
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);
}