--- v2.4.0-test10-pre7/mm/vmalloc.c	Mon Oct 30 16:02:27 2000
+++ test-10-7/mm/vmalloc.c	Tue Oct 31 10:58:47 2000
@@ -121,7 +121,11 @@
 	if (end > PGDIR_SIZE)
 		end = PGDIR_SIZE;
 	do {
-		pte_t * pte = pte_alloc_kernel(pmd, address);
+		pte_t * pte;
+
+		lock_kernel();
+		pte = pte_alloc_kernel(pmd, address);
+		unlock_kernel();
 		if (!pte)
 			return -ENOMEM;
 		if (alloc_area_pte(pte, address, end - address, gfp_mask, prot))
@@ -142,8 +146,10 @@
 	flush_cache_all();
 	do {
 		pmd_t *pmd;
-		
+
+		lock_kernel();
 		pmd = pmd_alloc_kernel(dir, address);
+		unlock_kernel();
 		if (!pmd)
 			return -ENOMEM;