]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring/net: use struct io_br_sel->val as the send finish value
authorJens Axboe <axboe@kernel.dk>
Thu, 21 Aug 2025 02:03:38 +0000 (20:03 -0600)
committerJens Axboe <axboe@kernel.dk>
Sun, 24 Aug 2025 17:41:12 +0000 (11:41 -0600)
Currently a pointer is passed in to the 'ret' in the send mshot handler,
but since we already have a value field in io_br_sel, just use that.
This is also in preparation for needing to pass in struct io_br_sel
to io_send_finish() anyway.

Link: https://lore.kernel.org/r/20250821020750.598432-11-axboe@kernel.dk
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/net.c

index a7a4443e3ee775cb63c41df742ff68b17f2c61e8..4eb208d241690dd721787d34e7f45db4498adf3b 100644 (file)
@@ -503,19 +503,20 @@ static int io_net_kbuf_recyle(struct io_kiocb *req, struct io_buffer_list *bl,
        return IOU_RETRY;
 }
 
-static inline bool io_send_finish(struct io_kiocb *req, int *ret,
-                                 struct io_async_msghdr *kmsg)
+static inline bool io_send_finish(struct io_kiocb *req,
+                                 struct io_async_msghdr *kmsg,
+                                 struct io_br_sel *sel)
 {
        struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
-       bool bundle_finished = *ret <= 0;
+       bool bundle_finished = sel->val <= 0;
        unsigned int cflags;
 
        if (!(sr->flags & IORING_RECVSEND_BUNDLE)) {
-               cflags = io_put_kbuf(req, *ret, req->buf_list);
+               cflags = io_put_kbuf(req, sel->val, req->buf_list);
                goto finish;
        }
 
-       cflags = io_put_kbufs(req, *ret, req->buf_list, io_bundle_nbufs(kmsg, *ret));
+       cflags = io_put_kbufs(req, sel->val, req->buf_list, io_bundle_nbufs(kmsg, sel->val));
 
        if (bundle_finished || req->flags & REQ_F_BL_EMPTY)
                goto finish;
@@ -524,15 +525,15 @@ static inline bool io_send_finish(struct io_kiocb *req, int *ret,
         * Fill CQE for this receive and see if we should keep trying to
         * receive from this socket.
         */
-       if (io_req_post_cqe(req, *ret, cflags | IORING_CQE_F_MORE)) {
+       if (io_req_post_cqe(req, sel->val, cflags | IORING_CQE_F_MORE)) {
                io_mshot_prep_retry(req, kmsg);
                return false;
        }
 
        /* Otherwise stop bundle and use the current result. */
 finish:
-       io_req_set_res(req, *ret, cflags);
-       *ret = IOU_COMPLETE;
+       io_req_set_res(req, sel->val, cflags);
+       sel->val = IOU_COMPLETE;
        return true;
 }
 
@@ -692,11 +693,12 @@ retry_bundle:
        else if (sr->done_io)
                ret = sr->done_io;
 
-       if (!io_send_finish(req, &ret, kmsg))
+       sel.val = ret;
+       if (!io_send_finish(req, kmsg, &sel))
                goto retry_bundle;
 
        io_req_msg_cleanup(req, issue_flags);
-       return ret;
+       return sel.val;
 }
 
 static int io_recvmsg_mshot_prep(struct io_kiocb *req,