Re: [PATCH] syscall02: add invalid syscall number test

Wei Gao via ltp <[email protected]>
Newsgroups gmane.linux.ltp
Message-ID <[email protected]>
On Mon, Jun 29, 2026 at 04:03:09PM +0200, Andrea Cervesato wrote:
> From: Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]>
> 
> Add a test verifying that syscall() returns ENOSYS when called with
> unimplemented syscall numbers. The chosen numbers stay above the syscall
> table and below the architecture-specific private ranges, so they are
> reliably invalid on every supported architecture.
> 
> Signed-off-by: Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]>
> ---
>  runtest/syscalls                              |  1 +
>  testcases/kernel/syscalls/syscall/.gitignore  |  1 +
>  testcases/kernel/syscalls/syscall/syscall02.c | 47 +++++++++++++++++++++++++++
>  3 files changed, 49 insertions(+)
> 
> diff --git a/runtest/syscalls b/runtest/syscalls
> index a021c79da49d4157c33187caed2dd3f0483759e0..8a777e61da1af59ba694e0bc5b5d92bb1d63754a 100644
> --- a/runtest/syscalls
> +++ b/runtest/syscalls
> @@ -1678,6 +1678,7 @@ sync_file_range01 sync_file_range01
>  sync_file_range02 sync_file_range02
>  
>  syscall01 syscall01
> +syscall02 syscall02
>  
>  sysconf01 sysconf01
>  
> diff --git a/testcases/kernel/syscalls/syscall/.gitignore b/testcases/kernel/syscalls/syscall/.gitignore
> index 74a081e40cb564e874e0f81478d3d1a0e95b6df4..fed1d81079450a7442023447285cd112924f7a10 100644
> --- a/testcases/kernel/syscalls/syscall/.gitignore
> +++ b/testcases/kernel/syscalls/syscall/.gitignore
> @@ -1 +1,2 @@
>  /syscall01
> +/syscall02
> diff --git a/testcases/kernel/syscalls/syscall/syscall02.c b/testcases/kernel/syscalls/syscall/syscall02.c
> new file mode 100644
> index 0000000000000000000000000000000000000000..3bd9fa8cdcca257e03b358749ee7a2b676d8720d
> --- /dev/null
> +++ b/testcases/kernel/syscalls/syscall/syscall02.c
> @@ -0,0 +1,47 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2026 Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]>
> + */
> +
> +/*\
> + * Verify that :manpage:`syscall(2)` fails with ENOSYS when invoked with
> + * invalid syscall numbers.
> + *
> + * The syscall number is dispatched as an unsigned value on Linux. A value is
> + * reliably unimplemented on every supported architecture when it is:
> + *
> + * - above the syscall table
> + * - below the architecture-specific private syscall ranges (e.g. ARM's
> + *   0x0f0000 base)
> + * - without the x32 ABI bit (0x40000000) set
> + *
> + * Such a number is routed to sys_ni_syscall and returns ENOSYS.
> + */
> +
> +#include <unistd.h>
> +#include <sys/syscall.h>
> +
> +#include "tst_test.h"
> +
> +#define TC(x) {.scno = (long)(x), .desc = #x}
> +
> +static struct tcase {
> +	long scno;
> +	const char *desc;
> +} tcases[] = {
> +	TC(0x8000),
> +	TC(0xf000),
> +	TC(0xfffe),
> +};

I suggest add two more cases check:
1) -1
2) __NR_syscalls +1 (Base arch/powerpc/kernel/syscall.c)

> +
> +static void verify_syscall(unsigned int n)
> +{
> +	struct tcase *tc = &tcases[n];
> +
> +	TST_EXP_FAIL2(syscall(tc->scno), ENOSYS, "syscall(%s)", tc->desc);
> +}
> +
> +static struct tst_test test = {
> +	.test = verify_syscall,
> +	.tcnt = ARRAY_SIZE(tcases),
> +};
> 
> ---
> base-commit: ad68429b9cfd55b233733e45e600ffafa1458ac5
> change-id: 20260629-invalid_syscalls-0476c52d7d0c
> 
> Best regards,
> -- 
> Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]>
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.