On Mon, Feb 17, 2025 at 02:04:15PM +0000, Ryan Roberts wrote: > diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c > index 06db4649af91..614b2feddba2 100644 > --- a/arch/arm64/mm/hugetlbpage.c > +++ b/arch/arm64/mm/hugetlbpage.c > @@ -163,24 +163,23 @@ static pte_t get_clear_contig(struct mm_struct *mm, > unsigned long pgsize, > unsigned long ncontig) > { > - pte_t orig_pte = __ptep_get(ptep); > - unsigned long i; > - > - for (i = 0; i < ncontig; i++, addr += pgsize, ptep++) { > - pte_t pte = __ptep_get_and_clear(mm, addr, ptep); > - > - /* > - * If HW_AFDBM is enabled, then the HW could turn on > - * the dirty or accessed bit for any page in the set, > - * so check them all. > - */ > - if (pte_dirty(pte)) > - orig_pte = pte_mkdirty(orig_pte); > - > - if (pte_young(pte)) > - orig_pte = pte_mkyoung(orig_pte); > + pte_t pte, tmp_pte; > + bool present; > + > + pte = __ptep_get_and_clear(mm, addr, ptep); > + present = pte_present(pte); > + while (--ncontig) { A 'for' loop may be more consistent with the rest of the file but I really don't mind the 'while' loop. Reviewed-by: Catalin Marinas <catalin.marinas@xxxxxxx>