[LTP] [PATCH] io_submit: Use TST_PTR_TO_UINT() for aio_buf

Victor Cheng-Yen Yang cyyang772@andestech.com
Fri Oct 30 01:57:18 CET 2026


From: Victor Cheng-Yen Yang <cyyang772@andestech.com>

GCC sign-extends a 32-bit pointer cast straight to a 64-bit integer, so
a buffer at or above 0x80000000 is passed as 0xffffffff8xxxxxxx and
io_submit() fails with EINVAL. The static buffer can land there in a
PIE binary with ASLR, and io_submit02 and io_submit03 then fail
intermittently.

Fixes: 7fb2b884ae8f ("syscalls/io_submit: Add io_submit02 test for native AIO")
Fixes: cd99e77be2ef ("syscalls/io_submit: Add io_submit03 test for native AIO")
Signed-off-by: Victor Cheng-Yen Yang <cyyang772@andestech.com>
---
 testcases/kernel/syscalls/io_submit/io_submit02.c | 2 +-
 testcases/kernel/syscalls/io_submit/io_submit03.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/testcases/kernel/syscalls/io_submit/io_submit02.c b/testcases/kernel/syscalls/io_submit/io_submit02.c
index 36e9c29f93..ab9d6ee35a 100644
--- a/testcases/kernel/syscalls/io_submit/io_submit02.c
+++ b/testcases/kernel/syscalls/io_submit/io_submit02.c
@@ -45,7 +45,7 @@ static inline void io_prep_option(struct iocb *cb, int fd, void *buf,
 	memset(cb, 0, sizeof(*cb));
 	cb->aio_fildes = fd;
 	cb->aio_lio_opcode = opcode;
-	cb->aio_buf = (uint64_t)buf;
+	cb->aio_buf = TST_PTR_TO_UINT(buf);
 	cb->aio_offset = offset;
 	cb->aio_nbytes = count;
 }
diff --git a/testcases/kernel/syscalls/io_submit/io_submit03.c b/testcases/kernel/syscalls/io_submit/io_submit03.c
index 45903107d7..dd7e7217de 100644
--- a/testcases/kernel/syscalls/io_submit/io_submit03.c
+++ b/testcases/kernel/syscalls/io_submit/io_submit03.c
@@ -71,7 +71,7 @@ static inline void io_prep_option(struct iocb *cb, int fd, void *buf,
 	memset(cb, 0, sizeof(*cb));
 	cb->aio_fildes = fd;
 	cb->aio_lio_opcode = opcode;
-	cb->aio_buf = (uint64_t)buf;
+	cb->aio_buf = TST_PTR_TO_UINT(buf);
 	cb->aio_offset = offset;
 	cb->aio_nbytes = count;
 }
-- 
2.55.0



More information about the ltp mailing list