Thread (59 messages) 59 messages, 6 authors, 2011-03-21

[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help