Re: [PATCH v2 1/2] mm: Use a folio in the softleaf_is_device_private path
From: Hongfu Li
Date: Fri Jul 31 2026 - 05:48:31 EST
> > mm/memory.c | 11 ++++++-----
> > 1 file changed, 6 insertions(+), 5 deletions(-)
> >
> > diff --git a/mm/memory.c b/mm/memory.c
> > index d5e87624f692..ae521baa8c84 100644
> > --- a/mm/memory.c
> > +++ b/mm/memory.c
> > @@ -4871,18 +4871,19 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
> > goto unlock;
> >
>
> Up here we have:
>
> vmf->page = softleaf_to_page(entry);
> vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd,
> vmf->address, &vmf->ptl);
> if (unlikely(!vmf->pte ||
> !pte_same(ptep_get(vmf->pte),
> vmf->orig_pte)))
>
> Since we're canonicalising to folio why not actually set folio using
> softleaf_to_folio()?
>
> So
>
> + folio = softleaf_to_folio(entry);
> - vmf->page = softleaf_to_page(entry);
> + vmf->page = &folio->page;
>
> This would also make more sense in your 2/2. But more on that in a sec.
Thanks, I've thought through your suggestion carefully.
Could entry reference a tail page of a folio here?
If so, softleaf_to_folio() retrieves the folio containing this page,
and vmf->page = &folio->page would point to the folio's head page,
which may not be correct.
Best regards,
Hongfu