Message ID | 20241203-io_uring_cmd_done-res2-as-u64-v2-1-5e59ae617151@ddn.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2] io_uring: Change res2 parameter type in io_uring_cmd_done | expand |
On 12/3/24 10:31, Bernd Schubert wrote: > Change the type of the res2 parameter in io_uring_cmd_done from ssize_t > to u64. This aligns the parameter type with io_req_set_cqe32_extra, > which expects u64 arguments. > The change eliminates potential issues on 32-bit architectures where > ssize_t might be 32-bit. > > Only user of passing res2 is drivers/nvme/host/ioctl.c and it actually > passes u64. LGTM. We can also convert all parameters to match the ABI, i.e. io_uring_cqe::res is s32, "ssize_t ret" is just truncated.
On Tue, 03 Dec 2024 11:31:05 +0100, Bernd Schubert wrote: > Change the type of the res2 parameter in io_uring_cmd_done from ssize_t > to u64. This aligns the parameter type with io_req_set_cqe32_extra, > which expects u64 arguments. > The change eliminates potential issues on 32-bit architectures where > ssize_t might be 32-bit. > > Only user of passing res2 is drivers/nvme/host/ioctl.c and it actually > passes u64. > > [...] Applied, thanks! [1/1] io_uring: Change res2 parameter type in io_uring_cmd_done (no commit info) Best regards,
diff --git a/include/linux/io_uring/cmd.h b/include/linux/io_uring/cmd.h index 578a3fdf5c719cf45fd4b6f9c894204d6b4f946c..0d5448c0b86cdde2e9764842adebafa1f8f49e61 100644 --- a/include/linux/io_uring/cmd.h +++ b/include/linux/io_uring/cmd.h @@ -43,7 +43,7 @@ int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, * Note: the caller should never hard code @issue_flags and is only allowed * to pass the mask provided by the core io_uring code. */ -void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2, +void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, u64 res2, unsigned issue_flags); void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd, @@ -67,7 +67,7 @@ static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, return -EOPNOTSUPP; } static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, - ssize_t ret2, unsigned issue_flags) + u64 ret2, unsigned issue_flags) { } static inline void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd, diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c index d9fb2143f56ff5d13483687fa949c293f9b8dbef..af842e9b4eb975ba56aaeaaa0c2e207a7732beba 100644 --- a/io_uring/uring_cmd.c +++ b/io_uring/uring_cmd.c @@ -151,7 +151,7 @@ static inline void io_req_set_cqe32_extra(struct io_kiocb *req, * Called by consumers of io_uring_cmd, if they originally returned * -EIOCBQUEUED upon receiving the command. */ -void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2, +void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, u64 res2, unsigned issue_flags) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd);