]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
io_uring/uring_cmd: cleanup struct io_uring_cmd_data layout
authorJens Axboe <axboe@kernel.dk>
Thu, 23 Jan 2025 02:50:31 +0000 (19:50 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 23 Jan 2025 18:29:00 +0000 (11:29 -0700)
A few spots in uring_cmd assume that the SQEs copied are always at the
start of the structure, and hence mix req->async_data and the struct
itself.

Clean that up and use the proper indices.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/uring_cmd.c

index 3993c9339ac7612981b6edf4fa4b0a72abb21d59..6a63ec4b544566e4e41c45ff27f3bf3358c1d24d 100644 (file)
@@ -192,8 +192,8 @@ static int io_uring_cmd_prep_setup(struct io_kiocb *req,
                return 0;
        }
 
-       memcpy(req->async_data, sqe, uring_sqe_size(req->ctx));
-       ioucmd->sqe = req->async_data;
+       memcpy(cache->sqes, sqe, uring_sqe_size(req->ctx));
+       ioucmd->sqe = cache->sqes;
        return 0;
 }
 
@@ -260,7 +260,7 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
                struct io_uring_cmd_data *cache = req->async_data;
 
                if (ioucmd->sqe != (void *) cache)
-                       memcpy(cache, ioucmd->sqe, uring_sqe_size(req->ctx));
+                       memcpy(cache->sqes, ioucmd->sqe, uring_sqe_size(req->ctx));
                return -EAGAIN;
        } else if (ret == -EIOCBQUEUED) {
                return -EIOCBQUEUED;