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

From: Lorenzo Stoakes

Date: Thu May 28 2026 - 07:29:01 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.

This is an insufficient commit message that's just saying what you're doing,
which isn't very useful.

Please explain why you're doing this and what the benefit is please.

Thanks, Lorenzo

>
> Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>
> ---
> 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
>