From 41a4e90e6f0abea38d732f64c5ba2cd2cb9d8f12 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 27 Sep 2008 15:45:54 +0000 Subject: [PATCH] If the panic thread is preempted after setting panicstr but before setting TDF_INPANIC then it will never be rescheduled again. Wrap setting the panic condition with the critical section. Noted and reviewed by: tegge MFC after: 1 week --- sys/kern/kern_shutdown.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c index 6c3d82dc57e..e6d4f4466f2 100644 --- a/sys/kern/kern_shutdown.c +++ b/sys/kern/kern_shutdown.c @@ -511,6 +511,7 @@ panic(const char *fmt, ...) va_list ap; static char buf[256]; + critical_enter(); #ifdef SMP /* * We don't want multiple CPU's to panic at the same time, so we @@ -569,6 +570,7 @@ panic(const char *fmt, ...) /* thread_unlock(td); */ if (!sync_on_panic) bootopt |= RB_NOSYNC; + critical_exit(); boot(bootopt); }