* [PATCH v2] io_uring: Change res2 parameter type in io_uring_cmd_done
@ 2024-12-03 10:31 Bernd Schubert
2024-12-03 12:05 ` Pavel Begunkov
2024-12-03 13:42 ` Jens Axboe
0 siblings, 2 replies; 3+ messages in thread
From: Bernd Schubert @ 2024-12-03 10:31 UTC (permalink / raw)
To: Jens Axboe, Pavel Begunkov, Kanchan Joshi
Cc: io-uring, stable, Li Zetao, Bernd Schubert
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.
Fixes: ee692a21e9bf ("fs,io_uring: add infrastructure for uring-cmd")
Cc: [email protected]
Reviewed-by: Kanchan Joshi <[email protected]>
Tested-by: Li Zetao <[email protected]>
Reviewed-by: Li Zetao <[email protected]>
Signed-off-by: Bernd Schubert <[email protected]>
---
Changes in v2:
- As suggested by Li Zetao, also update the type with CONFIG_IO_URING=n
- Link to v1: https://lore.kernel.org/r/[email protected]
---
include/linux/io_uring/cmd.h | 4 ++--
io_uring/uring_cmd.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
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);
---
base-commit: 7af08b57bcb9ebf78675c50069c54125c0a8b795
change-id: 20241202-io_uring_cmd_done-res2-as-u64-217a4e47b93f
Best regards,
--
Bernd Schubert <[email protected]>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] io_uring: Change res2 parameter type in io_uring_cmd_done
2024-12-03 10:31 [PATCH v2] io_uring: Change res2 parameter type in io_uring_cmd_done Bernd Schubert
@ 2024-12-03 12:05 ` Pavel Begunkov
2024-12-03 13:42 ` Jens Axboe
1 sibling, 0 replies; 3+ messages in thread
From: Pavel Begunkov @ 2024-12-03 12:05 UTC (permalink / raw)
To: Bernd Schubert, Jens Axboe, Kanchan Joshi; +Cc: io-uring, stable, Li Zetao
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.
--
Pavel Begunkov
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] io_uring: Change res2 parameter type in io_uring_cmd_done
2024-12-03 10:31 [PATCH v2] io_uring: Change res2 parameter type in io_uring_cmd_done Bernd Schubert
2024-12-03 12:05 ` Pavel Begunkov
@ 2024-12-03 13:42 ` Jens Axboe
1 sibling, 0 replies; 3+ messages in thread
From: Jens Axboe @ 2024-12-03 13:42 UTC (permalink / raw)
To: Pavel Begunkov, Kanchan Joshi, Bernd Schubert; +Cc: io-uring, stable, Li Zetao
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,
--
Jens Axboe
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-12-03 13:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-03 10:31 [PATCH v2] io_uring: Change res2 parameter type in io_uring_cmd_done Bernd Schubert
2024-12-03 12:05 ` Pavel Begunkov
2024-12-03 13:42 ` Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox