[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