[LTP] [PATCH] userfaultfd05: handle kernels rejecting WP feature in UFFDIO_API

Li Wang liwang@redhat.com
Fri Jan 23 12:34:20 CET 2026


> >       if (ioctl(uffd, UFFDIO_API, &uffdio_api) < 0) {
> > -             if (!(uffdio_api.features & UFFD_FEATURE_PAGEFAULT_FLAG_WP))
> > -                     tst_brk(TCONF, "UFFD write-protect unsupported");
> > +             int err = errno;
> > +             if (err == EINVAL) {
> > +                     uffdio_api.api = UFFD_API;
> > +                     uffdio_api.features = 0;
> > +
> > +                     if (ioctl(uffd, UFFDIO_API, &uffdio_api) == 0)
> > +                             tst_brk(TCONF, "UFFD write-protect unsupported");
> > +             }
>
> Wouldn't be better in this case to check kconfig for
> CONFIG_HAVE_ARCH_USERFAULTFD_WP (untested, but it should work

That's true, it would be simpler, let's go with this method.

> Back to our discussion about how often using kconfig [1]. While I prefer to
> avoid using it for tristate (kernel might be configured but module missing), but
> here is just a feature.

> [1] https://lore.kernel.org/ltp/CAASaF6wOSvi+07Pq5O6+f1Hkrq6WWMgpCaooJxWrO9uOvRM3pw@mail.gmail.com/

I don’t think there is a single “standard” answer for feature detection;
it really depends on the specific situation.

For the UFFD-WP feature the situation is: there isn’t really a boot
parameter or runtime knob that disables UFFD-WP independently once the
interface is present. Given that, a simpler approach is to rely on Kconfig
checks.

This is especially relevant here because different kernels report “WP
unsupported” differently (e.g. return -1/EINVAL vs return 0 with a
different feature mask), which makes runtime-based detection more
complicated.


-- 
Regards,
Li Wang



More information about the ltp mailing list