Re: [PATCH v3] mm/page_vma_mapped_walk: Use ptep_get_lockless() for lockless access

From: Oscar Salvador (SUSE)

Date: Fri May 29 2026 - 13:42:12 EST


On Thu, May 28, 2026 at 09:55:07AM +0200, Alexander Gordeev wrote:
> Switch from ptep_get() to ptep_get_lockless() accessor for
> PTE reads when no lock is taken.
>
> Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>

I see Andrew has picked up the patch with the amended changelog, so with
that:

Reviewed-by: Oscar Salvador (SUSE) <osalvador@xxxxxxxxxx>

> ---
> mm/page_vma_mapped.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c
> index a4d52fdb3056..2ccbabfb2cc1 100644
> --- a/mm/page_vma_mapped.c
> +++ b/mm/page_vma_mapped.c
> @@ -41,7 +41,7 @@ static bool map_pte(struct page_vma_mapped_walk *pvmw, pmd_t *pmdvalp,
> if (!pvmw->pte)
> return false;
>
> - ptent = ptep_get(pvmw->pte);
> + ptent = ptep_get_lockless(pvmw->pte);
>
> if (pte_none(ptent)) {
> return false;
> @@ -183,6 +183,7 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw)
> struct mm_struct *mm = vma->vm_mm;
> unsigned long end;
> spinlock_t *ptl;
> + pte_t pteval;
> pgd_t *pgd;
> p4d_t *p4d;
> pud_t *pud;
> @@ -310,7 +311,11 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw)
> goto restart;
> }
> pvmw->pte++;
> - } while (pte_none(ptep_get(pvmw->pte)));
> + if (!pvmw->ptl)
> + pteval = ptep_get_lockless(pvmw->pte);
> + else
> + pteval = ptep_get(pvmw->pte);
> + } while (pte_none(pteval));
>
> if (!pvmw->ptl) {
> spin_lock(ptl);
> --
> 2.51.0
>

--
Oscar Salvador
SUSE Labs