[PATCH 11/46] mm/huge_memory: properly handle refcounted PUD mappings on fork

Zi Yan ziy at nvidia.com
Tue Oct 27 14:10:32 PDT 2026


On Mon Oct 26, 2026 at 7:17 PM EDT, David Hildenbrand (Arm) wrote:
> copy_huge_pud() copies device-DAX entries without taking a folio reference
> or updating mapcounts and the child's RSS.
>
> For example, MADV_GUARD_INSTALL sets VM_MAYBE_GUARD on a device-DAX VMA,
> forcing copy_page_range() to traverse the whole VMA on fork. Any remaining
> huge PUDs are then copied without accounting for the new mappings.
> Unmapping them in the child decrements accounting that was never added.
>
> Use vm_normal_page_pud() to identify refcounted mappings. Take a folio
> reference and add the child's PUD rmap and RSS accounting before installing
> the copied entry. Pass src and dst VMAs consistently instead of src and
> dst MM. Move the TODO.
>
> Fixes: aed877c2b4257 ("device/dax: properly refcount device dax pages when mapping")
> Cc: stable at vger.kernel.org
> Signed-off-by: David Hildenbrand (Arm) <david at kernel.org>
> ---
>  include/linux/huge_mm.h |  5 ++---
>  mm/huge_memory.c        | 27 +++++++++++++++++++--------
>  mm/memory.c             |  4 +---
>  3 files changed, 22 insertions(+), 14 deletions(-)
>

Reviewed-by: Zi Yan <ziy at nvidia.com>

-- 
Best Regards,
Yan, Zi




More information about the kexec mailing list