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
This commit is contained in:
kib 2008-09-27 15:45:54 +00:00
parent e873cabccd
commit 1fb31bd167

View File

@ -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);
}