summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sx.c
diff options
context:
space:
mode:
authormarkj <markj@FreeBSD.org>2017-06-22 18:40:34 +0000
committermarkj <markj@FreeBSD.org>2017-06-22 18:40:34 +0000
commitdc3279ce1b2fdb317c03f4c8acdff832bb86136c (patch)
treef37961f424802c9c956e0ef6bd89ce2847122c4a /sys/kern/kern_sx.c
parentfd96702d849533e4587d397e7d6c1e7da98e666a (diff)
downloadFreeBSD-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.c8
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,
OpenPOWER on IntegriCloud