diff -urN 2.4.19pre6/arch/arm/mm/mm-armo.c pgt-cache/arch/arm/mm/mm-armo.c --- 2.4.19pre6/arch/arm/mm/mm-armo.c Tue May 1 19:35:17 2001 +++ pgt-cache/arch/arm/mm/mm-armo.c Fri Apr 5 18:06:57 2002 @@ -104,6 +104,7 @@ no_pte: spin_unlock(&mm->page_table_lock); pmd_free(new_pmd); + check_pgt_cache(); free_pgd_slow(new_pgd); return NULL; diff -urN 2.4.19pre6/arch/arm/mm/mm-armv.c pgt-cache/arch/arm/mm/mm-armv.c --- 2.4.19pre6/arch/arm/mm/mm-armv.c Fri Apr 5 10:10:44 2002 +++ pgt-cache/arch/arm/mm/mm-armv.c Fri Apr 5 18:06:57 2002 @@ -123,6 +123,7 @@ no_pte: spin_unlock(&mm->page_table_lock); pmd_free(new_pmd); + check_pgt_cache(); free_pages((unsigned long)new_pgd, 2); return NULL; @@ -157,6 +158,7 @@ pmd_clear(pmd); pte_free(pte); pmd_free(pmd); + check_pgt_cache(); free: free_pages((unsigned long) pgd, 2); } diff -urN 2.4.19pre6/kernel/fork.c pgt-cache/kernel/fork.c --- 2.4.19pre6/kernel/fork.c Fri Apr 5 10:11:17 2002 +++ pgt-cache/kernel/fork.c Fri Apr 5 18:07:17 2002 @@ -254,6 +254,7 @@ { BUG_ON(mm == &init_mm); pgd_free(mm->pgd); + check_pgt_cache(); destroy_context(mm); free_mm(mm); } diff -urN 2.4.19pre6/mm/memory.c pgt-cache/mm/memory.c --- 2.4.19pre6/mm/memory.c Fri Apr 5 10:11:18 2002 +++ pgt-cache/mm/memory.c Fri Apr 5 18:06:57 2002 @@ -1412,6 +1412,7 @@ */ if (!pgd_none(*pgd)) { pmd_free(new); + check_pgt_cache(); goto out; } } @@ -1446,6 +1447,7 @@ */ if (!pmd_none(*pmd)) { pte_free(new); + check_pgt_cache(); goto out; } }