(kostja@f0)/git/vzkernel.vz10:git describe --contains 9d1483818de4f
kernel-6.12.0-65.el10~6^2

(kostja@f0)/git/vzkernel.vz10:git l tools/testing/selftests/mm/memfd_secret.c
9d1483818de4f Revert "selftests/mm: remove local __NR_* definitions"

=> already in RHEL10.2

--
Best regards,

Konstantin Khorenko,
Virtuozzo Linux Kernel Team

On 6/15/26 22:42, Eva Kurchatova wrote:
> From: John Hubbard <[email protected]>
> 
> This reverts commit a5c6bc590094a1a73cf6fa3f505e1945d2bf2461.
> 
> The general approach described in commit e076eaca5906 ("selftests: break
> the dependency upon local header files") was taken one step too far here:
> it should not have been extended to include the syscall numbers.  This is
> because doing so would require per-arch support in tools/include/uapi, and
> no such support exists.
> 
> This revert fixes two separate reports of test failures, from Dave
> Hansen[1], and Li Wang[2].  An excerpt of Dave's report:
> 
> Before this commit (a5c6bc590094a1a73cf6fa3f505e1945d2bf2461) things are
> fine.  But after, I get:
> 
>       running PKEY tests for unsupported CPU/OS
> 
> An excerpt of Li's report:
> 
>     I just found that mlock2_() return a wrong value in mlock2-test
> 
> [1] https://lore.kernel.org/[email protected]
> [2] 
> https://lore.kernel.org/CAEemH2eW=umu9+turt2jrie7+6ewuazxma6kl+vbo3cgdgu...@mail.gmail.com
> 
> Link: https://lkml.kernel.org/r/[email protected]
> Fixes: a5c6bc590094 ("selftests/mm: remove local __NR_* definitions")
> Signed-off-by: John Hubbard <[email protected]>
> Cc: Dave Hansen <[email protected]>
> Cc: Li Wang <[email protected]>
> Cc: David Hildenbrand <[email protected]>
> Cc: Jeff Xu <[email protected]>
> Cc: Andrei Vagin <[email protected]>
> Cc: Axel Rasmussen <[email protected]>
> Cc: Christian Brauner <[email protected]>
> Cc: Kees Cook <[email protected]>
> Cc: Kent Overstreet <[email protected]>
> Cc: Liam R. Howlett <[email protected]>
> Cc: Muhammad Usama Anjum <[email protected]>
> Cc: Peter Xu <[email protected]>
> Cc: Rich Felker <[email protected]>
> Cc: Shuah Khan <[email protected]>
> Cc: <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> 
> (cherry picked from commit 0a7565ee6ec31eb16c0476adbfc1af3f2271cb6b)
> Signed-off-by: Eva Kurchatova <[email protected]>
> 
> https://virtuozzo.atlassian.net/browse/VSTOR-134200
> Feature: fix selftests
> ---
>  tools/testing/selftests/mm/hugepage-mremap.c      |  2 +-
>  tools/testing/selftests/mm/ksm_functional_tests.c |  8 +++++++-
>  tools/testing/selftests/mm/memfd_secret.c         | 14 +++++++++++++-
>  tools/testing/selftests/mm/mkdirty.c              |  8 +++++++-
>  tools/testing/selftests/mm/mlock2.h               |  1 -
>  tools/testing/selftests/mm/protection_keys.c      |  2 +-
>  tools/testing/selftests/mm/uffd-common.c          |  4 ++++
>  tools/testing/selftests/mm/uffd-stress.c          | 15 ++++++++++++++-
>  tools/testing/selftests/mm/uffd-unit-tests.c      | 14 +++++++++++++-
>  9 files changed, 60 insertions(+), 8 deletions(-)
> 
> diff --git a/tools/testing/selftests/mm/hugepage-mremap.c 
> b/tools/testing/selftests/mm/hugepage-mremap.c
> index ada9156cc497..c463d1c09c9b 100644
> --- a/tools/testing/selftests/mm/hugepage-mremap.c
> +++ b/tools/testing/selftests/mm/hugepage-mremap.c
> @@ -15,7 +15,7 @@
>  #define _GNU_SOURCE
>  #include <stdlib.h>
>  #include <stdio.h>
> -#include <asm-generic/unistd.h>
> +#include <unistd.h>
>  #include <sys/mman.h>
>  #include <errno.h>
>  #include <fcntl.h> /* Definition of O_* constants */
> diff --git a/tools/testing/selftests/mm/ksm_functional_tests.c 
> b/tools/testing/selftests/mm/ksm_functional_tests.c
> index 66b4e111b5a2..b61803e36d1c 100644
> --- a/tools/testing/selftests/mm/ksm_functional_tests.c
> +++ b/tools/testing/selftests/mm/ksm_functional_tests.c
> @@ -11,7 +11,7 @@
>  #include <string.h>
>  #include <stdbool.h>
>  #include <stdint.h>
> -#include <asm-generic/unistd.h>
> +#include <unistd.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <sys/mman.h>
> @@ -369,6 +369,7 @@ static void test_unmerge_discarded(void)
>       munmap(map, size);
>  }
>  
> +#ifdef __NR_userfaultfd
>  static void test_unmerge_uffd_wp(void)
>  {
>       struct uffdio_writeprotect uffd_writeprotect;
> @@ -429,6 +430,7 @@ static void test_unmerge_uffd_wp(void)
>  unmap:
>       munmap(map, size);
>  }
> +#endif
>  
>  /* Verify that KSM can be enabled / queried with prctl. */
>  static void test_prctl(void)
> @@ -684,7 +686,9 @@ int main(int argc, char **argv)
>               exit(test_child_ksm());
>       }
>  
> +#ifdef __NR_userfaultfd
>       tests++;
> +#endif
>  
>       ksft_print_header();
>       ksft_set_plan(tests);
> @@ -696,7 +700,9 @@ int main(int argc, char **argv)
>       test_unmerge();
>       test_unmerge_zero_pages();
>       test_unmerge_discarded();
> +#ifdef __NR_userfaultfd
>       test_unmerge_uffd_wp();
> +#endif
>  
>       test_prot_none();
>  
> diff --git a/tools/testing/selftests/mm/memfd_secret.c 
> b/tools/testing/selftests/mm/memfd_secret.c
> index 74c911aa3aea..9a0597310a76 100644
> --- a/tools/testing/selftests/mm/memfd_secret.c
> +++ b/tools/testing/selftests/mm/memfd_secret.c
> @@ -17,7 +17,7 @@
>  
>  #include <stdlib.h>
>  #include <string.h>
> -#include <asm-generic/unistd.h>
> +#include <unistd.h>
>  #include <errno.h>
>  #include <stdio.h>
>  #include <fcntl.h>
> @@ -28,6 +28,8 @@
>  #define pass(fmt, ...) ksft_test_result_pass(fmt, ##__VA_ARGS__)
>  #define skip(fmt, ...) ksft_test_result_skip(fmt, ##__VA_ARGS__)
>  
> +#ifdef __NR_memfd_secret
> +
>  #define PATTERN      0x55
>  
>  static const int prot = PROT_READ | PROT_WRITE;
> @@ -332,3 +334,13 @@ int main(int argc, char *argv[])
>  
>       ksft_finished();
>  }
> +
> +#else /* __NR_memfd_secret */
> +
> +int main(int argc, char *argv[])
> +{
> +     printf("skip: skipping memfd_secret test (missing 
> __NR_memfd_secret)\n");
> +     return KSFT_SKIP;
> +}
> +
> +#endif /* __NR_memfd_secret */
> diff --git a/tools/testing/selftests/mm/mkdirty.c 
> b/tools/testing/selftests/mm/mkdirty.c
> index 1db134063c38..b8a7efe9204e 100644
> --- a/tools/testing/selftests/mm/mkdirty.c
> +++ b/tools/testing/selftests/mm/mkdirty.c
> @@ -9,7 +9,7 @@
>   */
>  #include <fcntl.h>
>  #include <signal.h>
> -#include <asm-generic/unistd.h>
> +#include <unistd.h>
>  #include <string.h>
>  #include <errno.h>
>  #include <stdlib.h>
> @@ -265,6 +265,7 @@ static void test_pte_mapped_thp(void)
>       munmap(mmap_mem, mmap_size);
>  }
>  
> +#ifdef __NR_userfaultfd
>  static void test_uffdio_copy(void)
>  {
>       struct uffdio_register uffdio_register;
> @@ -321,6 +322,7 @@ static void test_uffdio_copy(void)
>       munmap(dst, pagesize);
>       free(src);
>  }
> +#endif /* __NR_userfaultfd */
>  
>  int main(void)
>  {
> @@ -333,7 +335,9 @@ int main(void)
>                              thpsize / 1024);
>               tests += 3;
>       }
> +#ifdef __NR_userfaultfd
>       tests += 1;
> +#endif /* __NR_userfaultfd */
>  
>       ksft_print_header();
>       ksft_set_plan(tests);
> @@ -363,7 +367,9 @@ int main(void)
>       if (thpsize)
>               test_pte_mapped_thp();
>       /* Placing a fresh page via userfaultfd may set the PTE dirty. */
> +#ifdef __NR_userfaultfd
>       test_uffdio_copy();
> +#endif /* __NR_userfaultfd */
>  
>       err = ksft_get_fail_cnt();
>       if (err)
> diff --git a/tools/testing/selftests/mm/mlock2.h 
> b/tools/testing/selftests/mm/mlock2.h
> index 1e5731bab499..4417eaa5cfb7 100644
> --- a/tools/testing/selftests/mm/mlock2.h
> +++ b/tools/testing/selftests/mm/mlock2.h
> @@ -3,7 +3,6 @@
>  #include <errno.h>
>  #include <stdio.h>
>  #include <stdlib.h>
> -#include <asm-generic/unistd.h>
>  
>  static int mlock2_(void *start, size_t len, int flags)
>  {
> diff --git a/tools/testing/selftests/mm/protection_keys.c 
> b/tools/testing/selftests/mm/protection_keys.c
> index 4990f7ab4cb7..4fcecfb7b189 100644
> --- a/tools/testing/selftests/mm/protection_keys.c
> +++ b/tools/testing/selftests/mm/protection_keys.c
> @@ -42,7 +42,7 @@
>  #include <sys/wait.h>
>  #include <sys/stat.h>
>  #include <fcntl.h>
> -#include <asm-generic/unistd.h>
> +#include <unistd.h>
>  #include <sys/ptrace.h>
>  #include <setjmp.h>
>  
> diff --git a/tools/testing/selftests/mm/uffd-common.c 
> b/tools/testing/selftests/mm/uffd-common.c
> index 717539eddf98..7ad6ba660c7d 100644
> --- a/tools/testing/selftests/mm/uffd-common.c
> +++ b/tools/testing/selftests/mm/uffd-common.c
> @@ -673,7 +673,11 @@ int uffd_open_dev(unsigned int flags)
>  
>  int uffd_open_sys(unsigned int flags)
>  {
> +#ifdef __NR_userfaultfd
>       return syscall(__NR_userfaultfd, flags);
> +#else
> +     return -1;
> +#endif
>  }
>  
>  int uffd_open(unsigned int flags)
> diff --git a/tools/testing/selftests/mm/uffd-stress.c 
> b/tools/testing/selftests/mm/uffd-stress.c
> index a4b83280998a..944d559ade21 100644
> --- a/tools/testing/selftests/mm/uffd-stress.c
> +++ b/tools/testing/selftests/mm/uffd-stress.c
> @@ -33,10 +33,11 @@
>   * pthread_mutex_lock will also verify the atomicity of the memory
>   * transfer (UFFDIO_COPY).
>   */
> -#include <asm-generic/unistd.h>
> +
>  #include "uffd-common.h"
>  
>  uint64_t features;
> +#ifdef __NR_userfaultfd
>  
>  #define BOUNCE_RANDOM                (1<<0)
>  #define BOUNCE_RACINGFAULTS  (1<<1)
> @@ -471,3 +472,15 @@ int main(int argc, char **argv)
>              nr_pages, nr_pages_per_cpu);
>       return userfaultfd_stress();
>  }
> +
> +#else /* __NR_userfaultfd */
> +
> +#warning "missing __NR_userfaultfd definition"
> +
> +int main(void)
> +{
> +     printf("skip: Skipping userfaultfd test (missing __NR_userfaultfd)\n");
> +     return KSFT_SKIP;
> +}
> +
> +#endif /* __NR_userfaultfd */
> diff --git a/tools/testing/selftests/mm/uffd-unit-tests.c 
> b/tools/testing/selftests/mm/uffd-unit-tests.c
> index 795bba310151..37c3549075bb 100644
> --- a/tools/testing/selftests/mm/uffd-unit-tests.c
> +++ b/tools/testing/selftests/mm/uffd-unit-tests.c
> @@ -5,11 +5,12 @@
>   *  Copyright (C) 2015-2023  Red Hat, Inc.
>   */
>  
> -#include <asm-generic/unistd.h>
>  #include "uffd-common.h"
>  
>  #include "../../../../mm/gup_test.h"
>  
> +#ifdef __NR_userfaultfd
> +
>  /* The unit test doesn't need a large or random size, make it 32MB for now */
>  #define  UFFD_TEST_MEM_SIZE               (32UL << 20)
>  
> @@ -1558,3 +1559,14 @@ int main(int argc, char *argv[])
>       return ksft_get_fail_cnt() ? KSFT_FAIL : KSFT_PASS;
>  }
>  
> +#else /* __NR_userfaultfd */
> +
> +#warning "missing __NR_userfaultfd definition"
> +
> +int main(void)
> +{
> +     printf("Skipping %s (missing __NR_userfaultfd)\n", __file__);
> +     return KSFT_SKIP;
> +}
> +
> +#endif /* __NR_userfaultfd */

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to