io_uring: remove extra nxt check after punt
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>
This commit is contained in:
parent
d7718a9d25
commit
4bc4494ec7
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue