diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2009-07-30 10:47:55 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-07-30 10:47:55 +0100 |
commit | 0a52ac8d181e938d640c2da70cad6d1301abe775 (patch) | |
tree | 046edf3437a49d3f6989d152bd94fcc80906b86d /mm/memory.c | |
parent | e81b795d44ba04beab7714de65ed2e377823bd37 (diff) | |
parent | 9b71de49b030ad8fd4d13d38571b5c42dc9ed8dd (diff) | |
download | kernel-crypto-0a52ac8d181e938d640c2da70cad6d1301abe775.tar.gz kernel-crypto-0a52ac8d181e938d640c2da70cad6d1301abe775.tar.xz kernel-crypto-0a52ac8d181e938d640c2da70cad6d1301abe775.zip |
Merge branch 's3c-fixes-rc4' of git://aeryn.fluff.org.uk/bjdooks/linux
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/mm/memory.c b/mm/memory.c index 65216194eb8..aede2ce3aba 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -135,11 +135,12 @@ void pmd_clear_bad(pmd_t *pmd) * Note: this doesn't free the actual pages themselves. That * has been handled earlier when unmapping all the memory regions. */ -static void free_pte_range(struct mmu_gather *tlb, pmd_t *pmd) +static void free_pte_range(struct mmu_gather *tlb, pmd_t *pmd, + unsigned long addr) { pgtable_t token = pmd_pgtable(*pmd); pmd_clear(pmd); - pte_free_tlb(tlb, token); + pte_free_tlb(tlb, token, addr); tlb->mm->nr_ptes--; } @@ -157,7 +158,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, next = pmd_addr_end(addr, end); if (pmd_none_or_clear_bad(pmd)) continue; - free_pte_range(tlb, pmd); + free_pte_range(tlb, pmd, addr); } while (pmd++, addr = next, addr != end); start &= PUD_MASK; @@ -173,7 +174,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, pmd = pmd_offset(pud, start); pud_clear(pud); - pmd_free_tlb(tlb, pmd); + pmd_free_tlb(tlb, pmd, start); } static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, @@ -206,7 +207,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, pud = pud_offset(pgd, start); pgd_clear(pgd); - pud_free_tlb(tlb, pud); + pud_free_tlb(tlb, pud, start); } /* |