From 1c6721ffa38f794225b1ff04dfb737d4c45af877 Mon Sep 17 00:00:00 2001 From: Axel Rasmussen Date: Fri, 19 Aug 2022 13:51:59 -0700 Subject: [PATCH] userfaultfd: selftests: modify selftest to use /dev/userfaultfd modify selftest to exit with KSFT_SKIP *only* when features are unsupported, exiting with 1 in other error cases, per Mike Link: https://lkml.kernel.org/r/20220819205201.658693-4-axelrasmussen@google.com Signed-off-by: Axel Rasmussen Acked-by: Mike Rapoport Acked-by: Peter Xu Cc: Al Viro Cc: Dave Hansen Cc: Dmitry V. Levin Cc: Gleb Fotengauer-Malinovskiy Cc: Hugh Dickins Cc: Jan Kara Cc: Jonathan Corbet Cc: Mel Gorman Cc: Mike Kravetz Cc: Mike Rapoport Cc: Nadav Amit Cc: Shuah Khan Cc: Shuah Khan Cc: Suren Baghdasaryan Cc: Vlastimil Babka Cc: Zhang Yi Signed-off-by: Andrew Morton --- tools/testing/selftests/vm/userfaultfd.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c index cae72867c173..7be709d9eed0 100644 --- a/tools/testing/selftests/vm/userfaultfd.c +++ b/tools/testing/selftests/vm/userfaultfd.c @@ -402,13 +402,16 @@ static void assert_expected_ioctls_present(uint64_t mode, uint64_t ioctls) static int __userfaultfd_open_dev(void) { - int fd, _uffd = -1; + int fd, _uffd; fd = open("/dev/userfaultfd", O_RDWR | O_CLOEXEC); if (fd < 0) - return -1; + errexit(KSFT_SKIP, "opening /dev/userfaultfd failed"); _uffd = ioctl(fd, USERFAULTFD_IOC_NEW, UFFD_FLAGS); + if (_uffd < 0) + errexit(errno == ENOTTY ? KSFT_SKIP : 1, + "creating userfaultfd failed"); close(fd); return _uffd; } @@ -419,10 +422,12 @@ static void userfaultfd_open(uint64_t *features) if (test_dev_userfaultfd) uffd = __userfaultfd_open_dev(); - else + else { uffd = syscall(__NR_userfaultfd, UFFD_FLAGS); - if (uffd < 0) - errexit(KSFT_SKIP, "creating userfaultfd failed"); + if (uffd < 0) + errexit(errno == ENOSYS ? KSFT_SKIP : 1, + "creating userfaultfd failed"); + } uffd_flags = fcntl(uffd, F_GETFD, NULL); uffdio_api.api = UFFD_API; -- 2.50.1