Re: [PATCH 1/4] mm: Introduce vm_uffd_ops API

From: David Hildenbrand
Date: Mon Jun 23 2025 - 04:25:52 EST


On 20.06.25 21:03, Peter Xu wrote:

Hi Peter,

Introduce a generic userfaultfd API for vm_operations_struct, so that one
vma, especially when as a module, can support userfaults without modifying

The sentence is confusing ("vma ... as a module").

Did you mean something like ".. so that a vma that is backed by a special-purpose in-memory filesystem like shmem or hugetlb can support userfaultfd without modifying the uffd core; this is required when the in-memory filesystem is built as a module."

the core files. More importantly, when the module can be compiled out of
the kernel.

So, instead of having core mm referencing modules that may not ever exist,
we need to have modules opt-in on core mm hooks instead.

After this API applied, if a module wants to support userfaultfd, the
module should only need to touch its own file and properly define
vm_uffd_ops, instead of changing anything in core mm.

Talking about modules that much is a bit confusing. I think this is more about cleanly supporting in-memory filesystems, without the need to special-case each and every one of them; can be viewed a cleanup independent of the module requirement from guest_memfd.


Note that such API will not work for anonymous. Core mm will process
anonymous memory separately for userfault operations like before.

This patch only introduces the API alone so that we can start to move
existing users over but without breaking them.

Currently the uffd_copy() API is almost designed to be the simplistic with
minimum mm changes to move over to the API.


Is there a way to move part of the actual implementation (how this is all wired up) from patch #4 into this patch, to then only remove the old shmem/hugetlb hooks (that are effectively unused) in patch #4?

--
Cheers,

David / dhildenb