On Fri, May 22, 2026 at 02:38:46PM +0100, Kiryl Shutsemau wrote: > From: "Kiryl Shutsemau (Meta)" <[email protected]> > > Preparatory patch. Add the change_protection() primitive that > userfaultfd RWP will use. > > An RWP-protected PTE is PAGE_NONE with the uffd PTE bit set. The > PROT_NONE half makes the CPU fault on any access; the uffd bit > distinguishes an RWP fault from a plain mprotect(PROT_NONE) or NUMA > hinting fault. MM_CP_UFFD_WP and MM_CP_UFFD_RWP share the same PTE > bit, so the two cannot be used together on the same range. > > Two new change_protection() flags: > > MM_CP_UFFD_RWP install PAGE_NONE and set the uffd bit > MM_CP_UFFD_RWP_RESOLVE restore vma->vm_page_prot, clear the uffd bit > > Both are wired through change_pte_range(), change_huge_pmd(), and > hugetlb_change_protection() so anon, shmem, THP, and hugetlb all > share the same semantics. > > Signed-off-by: Kiryl Shutsemau <[email protected]> > Assisted-by: Claude:claude-opus-4-6
Reviewed-by: Mike Rapoport (Microsoft) <[email protected]> > --- > include/linux/mm.h | 5 ++++ > include/linux/userfaultfd_k.h | 1 - > mm/huge_memory.c | 30 +++++++++++++---------- > mm/hugetlb.c | 25 ++++++++++++++----- > mm/mprotect.c | 46 +++++++++++++++++++++++++++-------- > 5 files changed, 77 insertions(+), 30 deletions(-) -- Sincerely yours, Mike.

