freebsd_network: Rearrange taskqueue_block functions and add NULL checks.

Should fix #17218.
This commit is contained in:
Augustin Cavalier
2022-03-21 15:48:59 -04:00
parent 168f941be5
commit 09ea42fa68
+28 -22
View File
@@ -434,6 +434,34 @@ taskqueue_cancel_timeout(struct taskqueue *queue,
}
void
taskqueue_block(struct taskqueue *taskQueue)
{
if (taskQueue == NULL)
return;
tq_lock(taskQueue);
taskQueue->tq_flags |= TQ_FLAGS_BLOCKED;
tq_unlock(taskQueue);
}
void
taskqueue_unblock(struct taskqueue *taskQueue)
{
if (taskQueue == NULL)
return;
tq_lock(taskQueue);
taskQueue->tq_flags &= ~TQ_FLAGS_BLOCKED;
if (taskQueue->tq_flags & TQ_FLAGS_PENDING) {
taskQueue->tq_flags &= ~TQ_FLAGS_PENDING;
taskQueue->tq_enqueue(taskQueue->tq_arg);
}
tq_unlock(taskQueue);
}
void
taskqueue_thread_enqueue(void *context)
{
@@ -554,25 +582,3 @@ uninit_taskqueues()
if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE))
taskqueue_free(taskqueue_fast);
}
void
taskqueue_block(struct taskqueue *taskQueue)
{
tq_lock(taskQueue);
taskQueue->tq_flags |= TQ_FLAGS_BLOCKED;
tq_unlock(taskQueue);
}
void
taskqueue_unblock(struct taskqueue *taskQueue)
{
tq_lock(taskQueue);
taskQueue->tq_flags &= ~TQ_FLAGS_BLOCKED;
if (taskQueue->tq_flags & TQ_FLAGS_PENDING) {
taskQueue->tq_flags &= ~TQ_FLAGS_PENDING;
taskQueue->tq_enqueue(taskQueue->tq_arg);
}
tq_unlock(taskQueue);
}