[PATCH v4 09/19] ARM: LPAE: Page table maintenance for the 3-level format
flat view
From: catalin.marinas@arm.com (Catalin Marinas)
Date: 2011-02-03 17:09:26
Also in:
lkml
On Mon, 2011-01-24 at 17:55 +0000, Catalin Marinas wrote:
quoted hunk ↗ jump to hunk
--- a/arch/arm/mm/pgd.c +++ b/arch/arm/mm/pgd.c@@ -80,20 +98,36 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd_base) if (!pgd_base) return; - pgd = pgd_base + pgd_index(0); - if (pgd_none_or_clear_bad(pgd)) - goto no_pgd; + if (!vectors_high()) { + pgd = pgd_base + pgd_index(0); + if (pgd_none_or_clear_bad(pgd)) + goto no_pgd; - pmd = pmd_offset(pgd, 0); - if (pmd_none_or_clear_bad(pmd)) - goto no_pmd; + pmd = pmd_offset(pgd, 0); + if (pmd_none_or_clear_bad(pmd)) + goto no_pmd; - pte = pmd_pgtable(*pmd); - pmd_clear(pmd); - pte_free(mm, pte); + pte = pmd_pgtable(*pmd); + pmd_clear(pmd); + pte_free(mm, pte); no_pmd: - pgd_clear(pgd); - pmd_free(mm, pmd); + pgd_clear(pgd); + pmd_free(mm, pmd); + } no_pgd:
I pushed some fixups to the arm-lpae branch mentioned in the cover letter. The hunk above doesn't need to be applied since FIRST_USER_ADDRESS is non-zero on ARM and free_pgtables() misses the first PMD when cleaning up user page tables (hence leaking some memory). -- Catalin