--- 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;