mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
io_uring: fix break condition for __io_uring_register() waiting
Colin reports that there's unreachable code, since we only ever break
if ret == 0. This is correct, and is due to a reversed logic condition
in when to break or not.
Break out of the loop if we don't process any task work, in that case
we do want to return -EINTR.
Fixes: af9c1a44f8
("io_uring: process task work in io_uring_register()")
Reported-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
ca6484cd30
commit
ed6930c920
1 changed files with 3 additions and 3 deletions
|
@ -9511,15 +9511,15 @@ static int __io_uring_register(struct io_ring_ctx *ctx, unsigned opcode,
|
|||
ret = wait_for_completion_interruptible(&ctx->ref_comp);
|
||||
if (!ret)
|
||||
break;
|
||||
if (io_run_task_work_sig() > 0)
|
||||
continue;
|
||||
ret = io_run_task_work_sig();
|
||||
if (ret < 0)
|
||||
break;
|
||||
} while (1);
|
||||
|
||||
mutex_lock(&ctx->uring_lock);
|
||||
|
||||
if (ret) {
|
||||
percpu_ref_resurrect(&ctx->refs);
|
||||
ret = -EINTR;
|
||||
goto out_quiesce;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue