diff -Nru linux-old/arch/i386/mm/fault.c linux-new/arch/i386/mm/fault.c
--- linux-old/arch/i386/mm/fault.c	2002-10-23 20:58:10.000000000 -0400
+++ linux-new/arch/i386/mm/fault.c	2002-10-23 21:11:29.000000000 -0400
@@ -27,6 +27,8 @@
 
 extern void die(const char *,struct pt_regs *,long);
 
+spinlock_t oops_lock = SPIN_LOCK_UNLOCKED;
+
 /*
  * Ugly, ugly, but the goto's result in better assembly..
  */
@@ -303,7 +305,7 @@
  * Oops. The kernel tried to access some bad page. We'll have to
  * terminate things with extreme prejudice.
  */
-
+	spin_lock(&oops_lock);
 	bust_spinlocks(1);
 
 	if (address < PAGE_SIZE)
@@ -324,6 +326,7 @@
 	}
 	die("Oops", regs, error_code);
 	bust_spinlocks(0);
+	spin_unlock(&oops_lock);
 	do_exit(SIGKILL);
 
 /*
