diff options
author | markj <markj@FreeBSD.org> | 2017-06-22 18:40:34 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2017-06-22 18:40:34 +0000 |
commit | dc3279ce1b2fdb317c03f4c8acdff832bb86136c (patch) | |
tree | f37961f424802c9c956e0ef6bd89ce2847122c4a /sys/kern/kern_sx.c | |
parent | fd96702d849533e4587d397e7d6c1e7da98e666a (diff) | |
download | FreeBSD-src-dc3279ce1b2fdb317c03f4c8acdff832bb86136c.zip FreeBSD-src-dc3279ce1b2fdb317c03f4c8acdff832bb86136c.tar.gz |
MFC r320124:
Fix the !TD_IS_IDLETHREAD(curthread) locking assertions.
Approved by: re (kib)
Diffstat (limited to 'sys/kern/kern_sx.c')
-rw-r--r-- | sys/kern/kern_sx.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c index 879e8a9..b8b69f1 100644 --- a/sys/kern/kern_sx.c +++ b/sys/kern/kern_sx.c @@ -293,7 +293,8 @@ _sx_xlock(struct sx *sx, int opts, const char *file, int line) uintptr_t tid, x; int error = 0; - KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), + KASSERT(kdb_active != 0 || SCHEDULER_STOPPED() || + !TD_IS_IDLETHREAD(curthread), ("sx_xlock() by idle thread %p on sx %s @ %s:%d", curthread, sx->lock_object.lo_name, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, @@ -330,7 +331,7 @@ sx_try_xlock_(struct sx *sx, const char *file, int line) if (SCHEDULER_STOPPED_TD(td)) return (1); - KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), + KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(td), ("sx_try_xlock() by idle thread %p on sx %s @ %s:%d", curthread, sx->lock_object.lo_name, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, @@ -1028,7 +1029,8 @@ _sx_slock(struct sx *sx, int opts, const char *file, int line) uintptr_t x; int error; - KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), + KASSERT(kdb_active != 0 || SCHEDULER_STOPPED() || + !TD_IS_IDLETHREAD(curthread), ("sx_slock() by idle thread %p on sx %s @ %s:%d", curthread, sx->lock_object.lo_name, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, |