6.13-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jens Axboe axboe@kernel.dk
commit cc34d8330e036b6bffa88db9ea537bae6b03948f upstream.
io_req_msg_cleanup() relies on the fact that io_netmsg_recycle() will always fully recycle, but that may not be the case if the msg cache was already full. To ensure that normal cleanup always gets run, let io_netmsg_recycle() deal with clearing the relevant cleanup flags, as it knows exactly when that should be done.
Cc: stable@vger.kernel.org Reported-by: David Wei dw@davidwei.uk Fixes: 75191341785e ("io_uring/net: add iovec recycling") Signed-off-by: Jens Axboe axboe@kernel.dk Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- io_uring/net.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
--- a/io_uring/net.c +++ b/io_uring/net.c @@ -151,7 +151,7 @@ static void io_netmsg_recycle(struct io_ if (iov) kasan_mempool_poison_object(iov); req->async_data = NULL; - req->flags &= ~REQ_F_ASYNC_DATA; + req->flags &= ~(REQ_F_ASYNC_DATA|REQ_F_NEED_CLEANUP); } }
@@ -453,7 +453,6 @@ int io_sendmsg_prep(struct io_kiocb *req static void io_req_msg_cleanup(struct io_kiocb *req, unsigned int issue_flags) { - req->flags &= ~REQ_F_NEED_CLEANUP; io_netmsg_recycle(req, issue_flags); }