From 769c6708cbd9bbea91321dc077442aad2a3d5f9b Mon Sep 17 00:00:00 2001 From: Stephan Uphoff Date: Sat, 25 Jun 2005 22:14:42 +0000 Subject: [PATCH] Disable the interrupts in trap_fatal before calling kdb_trap. (required now that critical sections no longer block interrupts) Reviewed by: jhb@ Approved by: re (scottl) Tested by: kris@,glebius@ --- sys/amd64/amd64/trap.c | 11 +++++++++-- sys/i386/i386/trap.c | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 659ba925b84a..98c1692a639c 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -648,8 +648,15 @@ trap_fatal(frame, eva) } #ifdef KDB - if ((debugger_on_panic || kdb_active) && kdb_trap(type, 0, frame)) - return; + if (debugger_on_panic || kdb_active) { + register_t rflags; + rflags = intr_disable(); + if (kdb_trap(type, 0, frame)) { + intr_restore(rflags); + return; + } + intr_restore(rflags); + } #endif printf("trap number = %d\n", type); if (type <= MAX_TRAP_MSG) diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c index 7cfa7ceb0889..d3afad1873ae 100644 --- a/sys/i386/i386/trap.c +++ b/sys/i386/i386/trap.c @@ -824,8 +824,15 @@ trap_fatal(frame, eva) } #ifdef KDB - if ((debugger_on_panic || kdb_active) && kdb_trap(type, 0, frame)) - return; + if (debugger_on_panic || kdb_active) { + register_t eflags; + eflags = intr_disable(); + if (kdb_trap(type, 0, frame)) { + intr_restore(eflags); + return; + } + intr_restore(eflags); + } #endif printf("trap number = %d\n", type); if (type <= MAX_TRAP_MSG)