1From 5c872199efc522c08cc34b4763edec861f87abfc Mon Sep 17 00:00:00 2001
2From: Edward Liaw <[email protected]>
3Date: Thu, 28 Jul 2022 00:26:52 +0000
4Subject: [PATCH 20/20] userfaultfd: don't use unsupported feature
5
6UFFD_FEATURE_PAGEFAULT_FLAG_WP was added in linux 5.7 and currently
7unsupported in Android >5.10.
8
9Bug: 234150821
10Test: atest vts_linux_kselftest_x86_64:vm_userfaultfd_anon_x86_64#vm_userfaultfd_anon_x86_64
11Test: atest vts_linux_kselftest_x86_64:vm_userfaultfd_shmem_x86_64#vm_userfaultfd_shmem_x86_64
12Signed-off-by: Edward Liaw <[email protected]>
13---
14 tools/testing/selftests/vm/userfaultfd.c | 17 +++++++++++++++++
15 1 file changed, 17 insertions(+)
16
17diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
18index e905bb502667..02cc35b65a7a 100644
19--- a/tools/testing/selftests/vm/userfaultfd.c
20+++ b/tools/testing/selftests/vm/userfaultfd.c
21@@ -1784,7 +1784,24 @@ static void set_test_type(const char *type)
22 static void parse_test_type_arg(const char *raw_type)
23 {
24 	char *buf = strdup(raw_type);
25+	/* b/234150821
26+	 * UFFD_FEATURE_PAGEFAULT_FLAG_WP unsupported in kernel <5.7
27+	 */
28+#ifdef __ANDROID__
29+	uint64_t features = (
30+		UFFD_FEATURE_EVENT_FORK |        \
31+		UFFD_FEATURE_EVENT_REMAP |       \
32+		UFFD_FEATURE_EVENT_REMOVE |      \
33+		UFFD_FEATURE_EVENT_UNMAP |       \
34+		UFFD_FEATURE_MISSING_HUGETLBFS | \
35+		UFFD_FEATURE_MISSING_SHMEM |     \
36+		UFFD_FEATURE_SIGBUS |            \
37+		UFFD_FEATURE_THREAD_ID |         \
38+		UFFD_FEATURE_MINOR_HUGETLBFS |   \
39+		UFFD_FEATURE_MINOR_SHMEM);
40+#else
41 	uint64_t features = UFFD_API_FEATURES;
42+#endif
43
44 	while (buf) {
45 		const char *token = strsep(&buf, ":");
46--
472.42.0.609.gbb76f46606-goog
48
49