From 86875541e5fd28a83fe08efdf15ea25b4bddcb4b Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Tue, 12 Jan 2021 11:40:17 -0500 Subject: [PATCH] mm/memory: Optimize free_pgtables() ma_state use increment a single maple tree iterator and copy the result instead of incrementing two iterators Signed-off-by: Liam R. Howlett --- mm/memory.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index f0e0adf8f491..e16041d87283 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -415,8 +415,9 @@ void free_pgtables(struct mmu_gather *tlb, struct ma_state *mas, */ while (next && next->vm_start <= vma->vm_end + PMD_SIZE && !is_vm_hugetlb_page(next)) { + *mas = ma_next; + vma = next; next = mas_find(&ma_next, ceiling - 1); - vma = mas_find(mas, ceiling - 1); BUG_ON(vma->vm_start < floor); BUG_ON(vma->vm_end -1 > ceiling - 1); unlink_anon_vmas(vma); @@ -425,7 +426,9 @@ void free_pgtables(struct mmu_gather *tlb, struct ma_state *mas, free_pgd_range(tlb, addr, vma->vm_end, floor, next ? next->vm_start : ceiling); } - } while ((vma = mas_find(mas, (ceiling - 1))) != NULL); + *mas = ma_next; + vma = next; + } while (vma); } int __pte_alloc(struct mm_struct *mm, pmd_t *pmd) -- 2.50.1