[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