aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_switch.c
diff options
context:
space:
mode:
authorAndriy Gapon <avg@FreeBSD.org>2011-12-04 21:27:41 +0000
committerAndriy Gapon <avg@FreeBSD.org>2011-12-04 21:27:41 +0000
commit5e27a60372eac27bb8a30dd363b2e0986aa564f6 (patch)
tree8c1a207ddd0410168b89a2c2a432d5df04086663 /sys/kern/kern_switch.c
parent0f60ecdaa4965d11cf7c8fb8ad9c14746eec94d2 (diff)
downloadsrc-5e27a60372eac27bb8a30dd363b2e0986aa564f6.tar.gz
src-5e27a60372eac27bb8a30dd363b2e0986aa564f6.zip
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
Notes
Notes: svn path=/head/; revision=228265
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 93cbf7b54db4..885dc22cea76 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--;