From 5e27a60372eac27bb8a30dd363b2e0986aa564f6 Mon Sep 17 00:00:00 2001 From: Andriy Gapon Date: Sun, 4 Dec 2011 21:27:41 +0000 Subject: [PATCH] critical_exit: ignore td_owepreempt if kdb_active is set calling mi_switch in such a context results in a recursion via kdb_switch Suggested by: jhb Reviewed by: jhb MFC after: 5 weeks --- sys/kern/kern_switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/kern_switch.c b/sys/kern/kern_switch.c index 93cbf7b54db..885dc22cea7 100644 --- a/sys/kern/kern_switch.c +++ b/sys/kern/kern_switch.c @@ -200,7 +200,7 @@ critical_exit(void) if (td->td_critnest == 1) { td->td_critnest = 0; - if (td->td_owepreempt) { + if (td->td_owepreempt && !kdb_active) { td->td_critnest = 1; thread_lock(td); td->td_critnest--;