Commit 1251d202 authored by Jens Axboe's avatar Jens Axboe
Browse files

io_uring/sqpoll: early exit thread if task_context wasn't allocated



Ideally we'd want to simply kill the task rather than wake it, but for
now let's just add a startup check that causes the thread to exit.
This can only happen if io_uring_alloc_task_context() fails, which
generally requires fault injection.

Reported-by: default avatarUbisectech Sirius <bugreport@ubisectech.com>
Fixes: af5d68f8 ("io_uring/sqpoll: manage task_work privately")
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent e21e1c45
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -274,6 +274,10 @@ static int io_sq_thread(void *data)
	char buf[TASK_COMM_LEN];
	DEFINE_WAIT(wait);

	/* offload context creation failed, just exit */
	if (!current->io_uring)
		goto err_out;

	snprintf(buf, sizeof(buf), "iou-sqp-%d", sqd->task_pid);
	set_task_comm(current, buf);

@@ -371,7 +375,7 @@ static int io_sq_thread(void *data)
		atomic_or(IORING_SQ_NEED_WAKEUP, &ctx->rings->sq_flags);
	io_run_task_work();
	mutex_unlock(&sqd->lock);

err_out:
	complete(&sqd->exited);
	do_exit(0);
}