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);