Don't overuse goto's, complex control flow doesn't make compilers happy and makes code harder to read. Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> --- fs/io_uring.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 9aeaa6f4a593..05b30212d9e6 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -6208,7 +6208,6 @@ static void __io_queue_sqe(struct io_kiocb *req, struct io_comp_state *cs) */ if (ret == -EAGAIN && !(req->flags & REQ_F_NOWAIT)) { if (!io_arm_poll_handler(req)) { -punt: /* * Queued up for async execution, worker will release * submit reference when the iocb is actually submitted. @@ -6237,12 +6236,9 @@ static void __io_queue_sqe(struct io_kiocb *req, struct io_comp_state *cs) if (nxt) { req = nxt; - - if (req->flags & REQ_F_FORCE_ASYNC) { - linked_timeout = NULL; - goto punt; - } - goto again; + if (!(req->flags & REQ_F_FORCE_ASYNC)) + goto again; + io_queue_async_work(req); } exit: if (old_creds) -- 2.24.0