summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_switch.c
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2011-12-04 21:27:41 +0000
committeravg <avg@FreeBSD.org>2011-12-04 21:27:41 +0000
commitc3db2f30bbfb50c8a85f5c8772f5fb2f25446647 (patch)
tree8c1a207ddd0410168b89a2c2a432d5df04086663 /sys/kern/kern_switch.c
parentb7c0f108678aa910790785a66b455555a8165e7a (diff)
downloadFreeBSD-src-c3db2f30bbfb50c8a85f5c8772f5fb2f25446647.zip
FreeBSD-src-c3db2f30bbfb50c8a85f5c8772f5fb2f25446647.tar.gz
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
Diffstat (limited to 'sys/kern/kern_switch.c')
-rw-r--r--sys/kern/kern_switch.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/kern_switch.c b/sys/kern/kern_switch.c
index 93cbf7b..885dc22 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--;
OpenPOWER on IntegriCloud