|
@@ -56,6 +56,9 @@ static int init_stub_pte(struct mm_struct *mm, unsigned long proc,
|
|
|
*/
|
|
|
|
|
|
mm->context.skas.last_page_table = pmd_page_kernel(*pmd);
|
|
|
+#ifdef CONFIG_3_LEVEL_PGTABLES
|
|
|
+ mm->context.skas.last_pmd = (unsigned long) __va(pud_val(*pud));
|
|
|
+#endif
|
|
|
|
|
|
*pte = mk_pte(virt_to_page(kernel), __pgprot(_PAGE_PRESENT));
|
|
|
*pte = pte_mkexec(*pte);
|
|
@@ -144,6 +147,10 @@ void destroy_context_skas(struct mm_struct *mm)
|
|
|
|
|
|
if(!proc_mm || !ptrace_faultinfo){
|
|
|
free_page(mmu->id.stack);
|
|
|
- free_page(mmu->last_page_table);
|
|
|
+ pte_free_kernel((pte_t *) mmu->last_page_table);
|
|
|
+ dec_page_state(nr_page_table_pages);
|
|
|
+#ifdef CONFIG_3_LEVEL_PGTABLES
|
|
|
+ pmd_free((pmd_t *) mmu->last_pmd);
|
|
|
+#endif
|
|
|
}
|
|
|
}
|