diff options
author | Stephan Uphoff <ups@FreeBSD.org> | 2005-04-08 03:37:53 +0000 |
---|---|---|
committer | Stephan Uphoff <ups@FreeBSD.org> | 2005-04-08 03:37:53 +0000 |
commit | 779186434a3d7c3ca8c09ef90f75cf757f369a96 (patch) | |
tree | 1dd51e535e839033d7b1c0ba6104fb1725aa3705 /sys/kern/kern_synch.c | |
parent | 37da95af97b68bf3eb7f704bad1a89f540d4d9f3 (diff) | |
download | src-779186434a3d7c3ca8c09ef90f75cf757f369a96.tar.gz src-779186434a3d7c3ca8c09ef90f75cf757f369a96.zip |
Sprinkle some volatile magic and rearrange things a bit to avoid race
conditions in critical_exit now that it no longer blocks interrupts.
Reviewed by: jhb
Notes
Notes:
svn path=/head/; revision=144777
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r-- | sys/kern/kern_synch.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index d86f570ea462..001cf2ac703e 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -286,7 +286,7 @@ mi_switch(int flags, struct thread *newtd) mtx_assert(&Giant, MA_NOTOWNED); #endif KASSERT(td->td_critnest == 1 || (td->td_critnest == 2 && - (td->td_pflags & TDP_OWEPREEMPT) != 0 && (flags & SW_INVOL) != 0 && + (td->td_owepreempt) && (flags & SW_INVOL) != 0 && newtd == NULL) || panicstr, ("mi_switch: switch in a critical section")); KASSERT((flags & (SW_INVOL | SW_VOL)) != 0, |