diff options
author | avg <avg@FreeBSD.org> | 2011-12-04 21:27:41 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2011-12-04 21:27:41 +0000 |
commit | c3db2f30bbfb50c8a85f5c8772f5fb2f25446647 (patch) | |
tree | 8c1a207ddd0410168b89a2c2a432d5df04086663 /sys | |
parent | b7c0f108678aa910790785a66b455555a8165e7a (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/kern/kern_switch.c | 2 |
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--; |