summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2022-11-16 09:43:39 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-11-16 09:57:20 +0100
commit0f544353fec8e717d37724d95b92538e1de79e86 (patch)
tree810caca1a774d2f1274881b99912119bc4fa5c94
parent154d744fbefcd13648ff036db2d185319afa74dc (diff)
io_uring: kill goto error handling in io_sqpoll_wait_sq()
Hunk extracted from commit 70aacfe66136809d7f080f89c492c278298719f4 upstream. If the sqpoll thread has died, the out condition doesn't remove the waiting task from the waitqueue. The goto and check are not needed, just make it a break condition after setting the error value. That ensures that we always remove ourselves from sqo_sq_wait waitqueue. Reported-by: Xingyuan Mo <hdthky0@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/io_uring.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 05f360b66b07..d1cb1addea96 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -9038,7 +9038,7 @@ static int io_sqpoll_wait_sq(struct io_ring_ctx *ctx)
if (unlikely(ctx->sqo_dead)) {
ret = -EOWNERDEAD;
- goto out;
+ break;
}
if (!io_sqring_full(ctx))
@@ -9048,7 +9048,6 @@ static int io_sqpoll_wait_sq(struct io_ring_ctx *ctx)
} while (!signal_pending(current));
finish_wait(&ctx->sqo_sq_wait, &wait);
-out:
return ret;
}