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:
Konstantin Belousov 2008-09-27 15:45:54 +00:00
parent b798355b99
commit 41a4e90e6f

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