[LTP] [PATCH] close_range: check for kernel support below 5.9

Li Wang liwang@redhat.com
Fri Feb 3 09:30:42 CET 2023


Hi Edward, Petr,

Sorry for the late append reply.

On Tue, Jan 31, 2023 at 8:25 AM Edward Liaw via ltp <ltp@lists.linux.it>
wrote:

> Check for close_range syscall support in the kernel before running
> close_range01 and close_range02 tests.
>
> Signed-off-by: Edward Liaw <edliaw@google.com>
> ---
>  include/lapi/close_range.h                          | 13 +++++++++++++
>  .../kernel/syscalls/close_range/close_range01.c     |  2 ++
>  .../kernel/syscalls/close_range/close_range02.c     |  1 +
>  3 files changed, 16 insertions(+)
>
> diff --git a/include/lapi/close_range.h b/include/lapi/close_range.h
> index 19db52d3d..0e464bb30 100644
> --- a/include/lapi/close_range.h
> +++ b/include/lapi/close_range.h
> @@ -25,4 +25,17 @@ static inline int close_range(unsigned int fd, unsigned
> int max_fd,
>         return tst_syscall(__NR_close_range, fd, max_fd, flags);
>  }
>  # endif
> +
> +static inline void close_range_supported_by_kernel(void)
> +{
> +       long ret;
> +
> +       if ((tst_kvercmp(5, 9, 0)) < 0) {
>

Using tst_kvercmp together with ENOSYS check is a repetitive practice,
I think verifying the returned value and errno is quite enough to determine
an un-support syscall.

And there is possible a lite kernel version newer than 5.9 removes this
syscall support. Then this test will fail again because this tst_kvercmp
skips the ENOSYS check.

Otherwise:
Reviewed-by: Li Wang <liwang@redhat.com>



> +               /* Check if the syscall is backported on an older kernel */
> +               ret = syscall(__NR_close_range, 1, 0, 0);
> +               if (ret == -1 && errno == ENOSYS)
> +                       tst_brk(TCONF, "Test not supported on kernel
> version < v5.9");
> +       }
> +}
> +
>  #endif /* LAPI_CLOSE_RANGE_H__ */
> diff --git a/testcases/kernel/syscalls/close_range/close_range01.c
> b/testcases/kernel/syscalls/close_range/close_range01.c
> index 30bb600b6..072bbab66 100644
> --- a/testcases/kernel/syscalls/close_range/close_range01.c
> +++ b/testcases/kernel/syscalls/close_range/close_range01.c
> @@ -53,6 +53,8 @@ static inline void do_close_range(unsigned int fd,
> unsigned int max_fd,
>
>  static void setup(void)
>  {
> +       close_range_supported_by_kernel();
> +
>         struct rlimit nfd;
>
>         SAFE_GETRLIMIT(RLIMIT_NOFILE, &nfd);
> diff --git a/testcases/kernel/syscalls/close_range/close_range02.c
> b/testcases/kernel/syscalls/close_range/close_range02.c
> index aec899261..2aa6d2c9f 100644
> --- a/testcases/kernel/syscalls/close_range/close_range02.c
> +++ b/testcases/kernel/syscalls/close_range/close_range02.c
> @@ -111,4 +111,5 @@ static struct tst_test test = {
>         .tcnt = 6,
>         .forks_child = 1,
>         .test = run,
> +       .setup = close_range_supported_by_kernel,
>  };
> --
> 2.39.1.456.gfc5497dd1b-goog
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
>

-- 
Regards,
Li Wang


More information about the ltp mailing list