From: Pavel Begunkov Date: Sun, 23 Feb 2025 17:22:30 +0000 (+0000) Subject: io_uring/net: canonise accept mshot handling X-Git-Tag: v6.15-rc1~167^2~71 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=185523ebc85342ed90c5a80034f281ac09fd29db;p=thirdparty%2Flinux.git 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 Link: https://lore.kernel.org/r/daf5c0df7e2966deb0a115021c065fc6161a52d7.1740331076.git.asml.silence@gmail.com Signed-off-by: Jens Axboe --- diff --git a/io_uring/net.c b/io_uring/net.c index 926cdb8d3350c..8283a1f55192f 100644 --- a/io_uring/net.c +++ b/io_uring/net.c @@ -1612,7 +1612,6 @@ retry: } if (ret == -ERESTARTSYS) ret = -EINTR; - req_set_fail(req); } else if (!fixed) { fd_install(fd, file); ret = fd; @@ -1625,14 +1624,8 @@ retry: 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 @@ retry: } 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;