[LTP] [PATCH v2] userfaultfd05: require CONFIG_HAVE_ARCH_USERFAULTFD_WP

Li Wang liwang@redhat.com
Fri Jan 23 12:54:19 CET 2026


Kernels built without arch UFFD-WP support (CONFIG_HAVE_ARCH_USERFAULTFD_WP)
can report "WP unsupported" in different ways (e.g. UFFDIO_API
returns -1/EINVAL on some newer kernels, while others succeed but do not
advertise UFFD_FEATURE_PAGEFAULT_FLAG_WP in the returned features mask).

Rather than relying on runtime probing that varies across kernels,
require CONFIG_HAVE_ARCH_USERFAULTFD_WP=y via .needs_kconfigs and use
SAFE_IOCTL() for UFFDIO_API again.

Follow-up: 485a4cd2ba3 ("userfaultfd05: allow TCONF when UFFD-WP is unsupported")
Signed-off-by: Li Wang <liwang@redhat.com>
Cc: Ricardo Branco <rbranco@suse.com>
---
 testcases/kernel/syscalls/userfaultfd/userfaultfd05.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/testcases/kernel/syscalls/userfaultfd/userfaultfd05.c b/testcases/kernel/syscalls/userfaultfd/userfaultfd05.c
index 6cae45f20..e25a227cf 100644
--- a/testcases/kernel/syscalls/userfaultfd/userfaultfd05.c
+++ b/testcases/kernel/syscalls/userfaultfd/userfaultfd05.c
@@ -92,12 +92,8 @@ static void run(void)
 
 	uffdio_api.api = UFFD_API;
 	uffdio_api.features = UFFD_FEATURE_PAGEFAULT_FLAG_WP;
-	if (ioctl(uffd, UFFDIO_API, &uffdio_api) < 0) {
-		if (!(uffdio_api.features & UFFD_FEATURE_PAGEFAULT_FLAG_WP))
-			tst_brk(TCONF, "UFFD write-protect unsupported");
 
-		tst_brk(TBROK | TERRNO, "ioctl() on userfaultfd failed");
-	}
+	SAFE_IOCTL(uffd, UFFDIO_API, &uffdio_api);
 
 	uffdio_register.range.start = (unsigned long) page;
 	uffdio_register.range.len = page_size;
@@ -128,4 +124,8 @@ static void run(void)
 static struct tst_test test = {
 	.test_all = run,
 	.min_kver = "5.7",
+	.needs_kconfigs = (const char *[]) {
+		"CONFIG_HAVE_ARCH_USERFAULTFD_WP=y",
+		NULL
+	}
 };
-- 
2.52.0



More information about the ltp mailing list