mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
io_uring/net: canonise accept mshot handling
Use a more recognisable pattern for mshot accept, first try to post an mshot cqe if needed and after do terminating handling. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/daf5c0df7e2966deb0a115021c065fc6161a52d7.1740331076.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
f6a89bf527
commit
185523ebc8
|
|
@ -1612,7 +1612,6 @@ int io_accept(struct io_kiocb *req, unsigned int issue_flags)
|
|||
}
|
||||
if (ret == -ERESTARTSYS)
|
||||
ret = -EINTR;
|
||||
req_set_fail(req);
|
||||
} else if (!fixed) {
|
||||
fd_install(fd, file);
|
||||
ret = fd;
|
||||
|
|
@ -1625,14 +1624,8 @@ int io_accept(struct io_kiocb *req, unsigned int issue_flags)
|
|||
if (!arg.is_empty)
|
||||
cflags |= IORING_CQE_F_SOCK_NONEMPTY;
|
||||
|
||||
if (!(req->flags & REQ_F_APOLL_MULTISHOT)) {
|
||||
io_req_set_res(req, ret, cflags);
|
||||
return IOU_OK;
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (io_req_post_cqe(req, ret, cflags | IORING_CQE_F_MORE)) {
|
||||
if (ret >= 0 && (req->flags & REQ_F_APOLL_MULTISHOT) &&
|
||||
io_req_post_cqe(req, ret, cflags | IORING_CQE_F_MORE)) {
|
||||
if (cflags & IORING_CQE_F_SOCK_NONEMPTY || arg.is_empty == -1)
|
||||
goto retry;
|
||||
if (issue_flags & IO_URING_F_MULTISHOT)
|
||||
|
|
@ -1641,6 +1634,8 @@ int io_accept(struct io_kiocb *req, unsigned int issue_flags)
|
|||
}
|
||||
|
||||
io_req_set_res(req, ret, cflags);
|
||||
if (ret < 0)
|
||||
req_set_fail(req);
|
||||
if (!(issue_flags & IO_URING_F_MULTISHOT))
|
||||
return IOU_OK;
|
||||
return IOU_STOP_MULTISHOT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user