userfaultfd: don't use unsupported feature am: 4a3ec628c0
Original change: https://android-review.googlesource.com/c/platform/external/linux-kselftest/+/2169802
Change-Id: I74c579a9cc598988bc397162b6e4051fc94bcf4f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/android/patches/0026-userfaultfd-don-t-use-unsupported-feature.patch b/android/patches/0026-userfaultfd-don-t-use-unsupported-feature.patch
new file mode 100644
index 0000000..9651389
--- /dev/null
+++ b/android/patches/0026-userfaultfd-don-t-use-unsupported-feature.patch
@@ -0,0 +1,49 @@
+From 37d2454af92b6ac3a3f98503cf9393efa1564189 Mon Sep 17 00:00:00 2001
+From: Edward Liaw <edliaw@google.com>
+Date: Thu, 28 Jul 2022 00:26:52 +0000
+Subject: [PATCH] userfaultfd: don't use unsupported feature
+
+UFFD_FEATURE_PAGEFAULT_FLAG_WP was added in linux 5.7 and currently
+unsupported in Android >5.10.
+
+Bug: 234150821
+Test: atest vts_linux_kselftest_x86_64:vm_userfaultfd_anon_x86_64#vm_userfaultfd_anon_x86_64
+Test: atest vts_linux_kselftest_x86_64:vm_userfaultfd_shmem_x86_64#vm_userfaultfd_shmem_x86_64
+Signed-off-by: Edward Liaw <edliaw@google.com>
+Change-Id: Ice2a9d3e427f717037175e68d5e209063c6693ee
+---
+ tools/testing/selftests/vm/userfaultfd.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
+index a38d5ac456d1a..d8ec4b0e4a4e0 100644
+--- a/tools/testing/selftests/vm/userfaultfd.c
++++ b/tools/testing/selftests/vm/userfaultfd.c
+@@ -1652,7 +1652,24 @@ unsigned long default_huge_page_size(void)
+
+ static void set_test_type(const char *type)
+ {
++ /* b/234150821
++ * UFFD_FEATURE_PAGEFAULT_FLAG_WP unsupported in kernel <5.7
++ */
++#ifdef __ANDROID__
++ uint64_t features = (
++ UFFD_FEATURE_EVENT_FORK | \
++ UFFD_FEATURE_EVENT_REMAP | \
++ UFFD_FEATURE_EVENT_REMOVE | \
++ UFFD_FEATURE_EVENT_UNMAP | \
++ UFFD_FEATURE_MISSING_HUGETLBFS | \
++ UFFD_FEATURE_MISSING_SHMEM | \
++ UFFD_FEATURE_SIGBUS | \
++ UFFD_FEATURE_THREAD_ID | \
++ UFFD_FEATURE_MINOR_HUGETLBFS | \
++ UFFD_FEATURE_MINOR_SHMEM);
++#else
+ uint64_t features = UFFD_API_FEATURES;
++#endif
+
+ if (!strcmp(type, "anon")) {
+ test_type = TEST_ANON;
+--
+2.37.1.455.g008518b4e5-goog
+
diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
index a38d5ac..d8ec4b0 100644
--- a/tools/testing/selftests/vm/userfaultfd.c
+++ b/tools/testing/selftests/vm/userfaultfd.c
@@ -1652,7 +1652,24 @@
static void set_test_type(const char *type)
{
+ /* b/234150821
+ * UFFD_FEATURE_PAGEFAULT_FLAG_WP unsupported in kernel <5.7
+ */
+#ifdef __ANDROID__
+ uint64_t features = (
+ UFFD_FEATURE_EVENT_FORK | \
+ UFFD_FEATURE_EVENT_REMAP | \
+ UFFD_FEATURE_EVENT_REMOVE | \
+ UFFD_FEATURE_EVENT_UNMAP | \
+ UFFD_FEATURE_MISSING_HUGETLBFS | \
+ UFFD_FEATURE_MISSING_SHMEM | \
+ UFFD_FEATURE_SIGBUS | \
+ UFFD_FEATURE_THREAD_ID | \
+ UFFD_FEATURE_MINOR_HUGETLBFS | \
+ UFFD_FEATURE_MINOR_SHMEM);
+#else
uint64_t features = UFFD_API_FEATURES;
+#endif
if (!strcmp(type, "anon")) {
test_type = TEST_ANON;