[LTP] [PATCH] syscalls/getrandom05: use tst_syscall
Li Wang
liwan@redhat.com
Thu Dec 5 02:48:23 CET 2024
On Wed, Dec 4, 2024 at 10:18 PM Jan Stancek <jstancek@redhat.com> wrote:
> With glibc-2.40 and recent kernel (6.12) the test uses
> vdso implementation which runs into SIGSEGV for EFAULT test:
>
> #0 __arch_chacha20_blocks_nostack () at
> arch/x86/entry/vdso/vgetrandom-chacha.S:146
> 146 movups state0,0x00(output)
>
> (gdb) bt
> #0 __arch_chacha20_blocks_nostack () at
> arch/x86/entry/vdso/vgetrandom-chacha.S:146
> #1 0x00007fcd3ce6417a in __cvdso_getrandom_data
> (rng_info=0x7fcd3ce5f280, buffer=0xffffffffffffffff, len=64, flags=1,
> opaque_state=0x7fcd3ce5df00,
> opaque_len=<optimized out>) at
> arch/x86/entry/vdso/../../../../lib/vdso/getrandom.c:237
> #2 __cvdso_getrandom (buffer=<optimized out>, len=64, flags=1,
> opaque_state=0x7fcd3ce5df00, opaque_len=<optimized out>)
> at arch/x86/entry/vdso/../../../../lib/vdso/getrandom.c:259
> #3 __vdso_getrandom (buffer=0xffffffffffffffff, len=64, flags=1,
> opaque_state=0x7fcd3ce5df00, opaque_len=<optimized out>)
> at arch/x86/entry/vdso/vgetrandom.c:11
> #4 0x00007fcd3cc7faf3 in getrandom_vdso (buffer=0xffffffffffffffff,
> length=64, flags=0, cancel=<optimized out>)
> at ../sysdeps/unix/sysv/linux/getrandom.c:204
> #5 0x0000000000401ff7 in verify_getrandom (i=0) at getrandom05.c:40
>
> Change the test to use syscall implementation of getrandom().
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
>
Good catch!
Reviewed-by: Li Wang <liwang@redhat.com>
---
> testcases/kernel/syscalls/getrandom/getrandom05.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/syscalls/getrandom/getrandom05.c
> b/testcases/kernel/syscalls/getrandom/getrandom05.c
> index 92098deb723d..8f7ce45785c5 100644
> --- a/testcases/kernel/syscalls/getrandom/getrandom05.c
> +++ b/testcases/kernel/syscalls/getrandom/getrandom05.c
> @@ -16,6 +16,7 @@
>
> #include "tst_test.h"
> #include "lapi/getrandom.h"
> +#include "lapi/syscalls.h"
>
> static char buff_efault[64];
> static char buff_einval[64];
> @@ -36,7 +37,7 @@ static void verify_getrandom(unsigned int i)
> {
> struct test_case_t *tc = &tcases[i];
>
> - TST_EXP_FAIL2(getrandom(tc->buff, tc->size, tc->flag),
> + TST_EXP_FAIL2(tst_syscall(__NR_getrandom, tc->buff, tc->size,
> tc->flag),
> tc->expected_errno, "%s", tc->desc);
> }
>
> --
> 2.43.0
>
>
More information about the ltp
mailing list