io_uring: remove extra nxt check after punt
authorPavel Begunkov <asml.silence@gmail.com>
Sat, 29 Feb 2020 19:48:24 +0000 (22:48 +0300)
committerJens Axboe <axboe@kernel.dk>
Mon, 2 Mar 2020 21:06:40 +0000 (14:06 -0700)
After __io_queue_sqe() ended up in io_queue_async_work(), it's already
known that there is no @nxt req, so skip the check and return from the
function.

Also, @nxt initialisation now can be done just before
io_put_req_find_next(), as there is no jumping until it's checked.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index 8c976fd..d70bc77 100644 (file)
@@ -4936,7 +4936,7 @@ static struct io_kiocb *io_prep_linked_timeout(struct io_kiocb *req)
 static void __io_queue_sqe(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 {
        struct io_kiocb *linked_timeout;
-       struct io_kiocb *nxt = NULL;
+       struct io_kiocb *nxt;
        const struct cred *old_creds = NULL;
        int ret;
 
@@ -4963,7 +4963,7 @@ again:
                if (io_arm_poll_handler(req)) {
                        if (linked_timeout)
                                io_queue_linked_timeout(linked_timeout);
-                       goto done_req;
+                       goto exit;
                }
 punt:
                if (io_op_defs[req->opcode].file_table) {
@@ -4977,10 +4977,11 @@ punt:
                 * submit reference when the iocb is actually submitted.
                 */
                io_queue_async_work(req);
-               goto done_req;
+               goto exit;
        }
 
 err:
+       nxt = NULL;
        /* drop submission reference */
        io_put_req_find_next(req, &nxt);
 
@@ -4997,15 +4998,14 @@ err:
                req_set_fail_links(req);
                io_put_req(req);
        }
-done_req:
        if (nxt) {
                req = nxt;
-               nxt = NULL;
 
                if (req->flags & REQ_F_FORCE_ASYNC)
                        goto punt;
                goto again;
        }
+exit:
        if (old_creds)
                revert_creds(old_creds);
 }