diff -urN oldtree/arch/x86_64/kernel/traps.c newtree/arch/x86_64/kernel/traps.c --- oldtree/arch/x86_64/kernel/traps.c 2006-07-05 10:06:57.000000000 -0400 +++ newtree/arch/x86_64/kernel/traps.c 2006-07-05 21:09:25.000000000 -0400 @@ -551,11 +551,14 @@ void die(const char * str, struct pt_regs * regs, long err) { - unsigned long flags = oops_begin(); + unsigned long flags; + oops_enter(); + flags = oops_begin(); handle_BUG(regs); __die(str, regs, err); oops_end(flags); + oops_exit(); do_exit(SIGSEGV); } diff -urN oldtree/arch/x86_64/mm/fault.c newtree/arch/x86_64/mm/fault.c --- oldtree/arch/x86_64/mm/fault.c 2006-07-05 10:06:57.000000000 -0400 +++ newtree/arch/x86_64/mm/fault.c 2006-07-05 21:09:25.000000000 -0400 @@ -261,9 +261,11 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs, unsigned long error_code) { - unsigned long flags = oops_begin(); + unsigned long flags; struct task_struct *tsk; + oops_enter(); + flags = oops_begin(); printk(KERN_ALERT "%s: Corrupted page table at address %lx\n", current->comm, address); dump_pagetable(address); @@ -273,6 +275,7 @@ tsk->thread.error_code = error_code; __die("Bad pagetable", regs, error_code); oops_end(flags); + oops_exit(); do_exit(SIGKILL); } @@ -562,6 +565,7 @@ * terminate things with extreme prejudice. */ + oops_enter(); flags = oops_begin(); if (address < PAGE_SIZE) @@ -578,6 +582,7 @@ /* Executive summary in case the body of the oops scrolled away */ printk(KERN_EMERG "CR2: %016lx\n", address); oops_end(flags); + oops_exit(); do_exit(SIGKILL); /*