Skip userfaultfd selftest if the syscall isn't available am: e0d8eb1e96
Original change: https://android-review.googlesource.com/c/platform/external/linux-kselftest/+/1899281
Change-Id: I0013aa28cd335d2bf66f514449d4530a87a6b406
diff --git a/android/patches/0019-userfaultfd.patch b/android/patches/0019-userfaultfd.patch
index 9c07018..67fe8ed 100644
--- a/android/patches/0019-userfaultfd.patch
+++ b/android/patches/0019-userfaultfd.patch
@@ -1,4 +1,3 @@
-diff -u b/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
--- b/tools/testing/selftests/vm/userfaultfd.c
+++ b/tools/testing/selftests/vm/userfaultfd.c
@@ -82,9 +82,11 @@
@@ -243,3 +242,20 @@
return userfaultfd_stress();
}
+--- a/tools/testing/selftests/vm/userfaultfd.c
++++ b/tools/testing/selftests/vm/userfaultfd.c
+@@ -662,8 +662,13 @@ static int userfaultfd_open(int features)
+
+ uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY);
+ if (uffd < 0) {
++ if (errno == ENOSYS) {
++ fprintf(stderr,
++ "userfaultfd syscall not available in this kernel\n");
++ exit(KSFT_PASS);
++ }
+ fprintf(stderr,
+- "userfaultfd syscall not available in this kernel\n");
++ "userfaultfd syscall failed with errno: %d\n", errno);
+ return 1;
+ }
+ uffd_flags = fcntl(uffd, F_GETFD, NULL);
diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
index 3e25afd..ffc78f3 100644
--- a/tools/testing/selftests/vm/userfaultfd.c
+++ b/tools/testing/selftests/vm/userfaultfd.c
@@ -662,8 +662,13 @@
uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY);
if (uffd < 0) {
+ if (errno == ENOSYS) {
+ fprintf(stderr,
+ "userfaultfd syscall not available in this kernel\n");
+ exit(KSFT_PASS);
+ }
fprintf(stderr,
- "userfaultfd syscall not available in this kernel\n");
+ "userfaultfd syscall failed with errno: %d\n", errno);
return 1;
}
uffd_flags = fcntl(uffd, F_GETFD, NULL);