Re: [PATCH v3 2/3] mm/hugetlb: disable PMD sharing for UFFD missing mode
From: Mike Rapoport
Date: Thu Oct 22 2026 - 02:53:02 EST
On Thu, Oct 22, 2026 at 11:45:42AM +0800, Li Zhe wrote:
> From: "David Hildenbrand (Arm)" <david@xxxxxxxxxx>
>
> For UFFDIO_POISON to install a poison marker in a hugetlb mapping, it is
> sufficient to have the VMA registered for missing mode.
>
> However, UFFD missing mode does currently not block PMD table sharing, so
> installing the marker will be visible to everyone using the shared PMD
> table, which is wrong as UFFDIO_POISON must stay local to the process.
>
> To fix it, make uffd_disable_huge_pmd_share() cover VM_UFFD_MISSING as
> well. With missing mode covered, hugetlb PMD sharing is disabled for all
> userfaultfd registered VMAs, so the helper can simply return whether the
> VMA has a userfaultfd context instead of testing individual UFFD mode
> flags. Add a debug check on the marker installation path.
>
> The existing registration path will then unshare PMD tables, and
> subsequent faults will not share them while the mapping remains
> registered.
>
> The alternative would be to unshare PMD tables selectively when
> installing poison markers, which results in way more complexity. Or
> alternatively, simply failing the marker installation, which might break
> some use cases.
>
> This also disables PMD sharing for userfaultfd registrations that never
> use UFFDIO_POISON.
>
> Suggested-by: Li Zhe <lizhe.67@xxxxxxxxxxxxx>
> Suggested-by: Mike Rapoport <rppt@xxxxxxxxxx>
> Fixes: 8a13897fb0da ("mm: userfaultfd: support UFFDIO_POISON for hugetlbfs")
> Signed-off-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
> Signed-off-by: Li Zhe <lizhe.67@xxxxxxxxxxxxx>
Acked-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
> ---
> include/linux/userfaultfd_k.h | 16 +++-------------
> mm/hugetlb.c | 1 +
> 2 files changed, 4 insertions(+), 13 deletions(-)
--
Sincerely yours,
Mike.