From 70dc4fad7a93ca73cc531060c49f47e0bd97911a Mon Sep 17 00:00:00 2001 From: adrian Date: Mon, 26 Jan 2015 04:04:57 +0000 Subject: Call WITNESS_WARN() in callout_drain() to check whether any locks are being held before sleeping. This has bitten me (in ath(4)) once before and I'd like to see this not bite anyone else. Differential Revision: D1638 Reviewed by: jhb, hselasky MFC after: 1 week --- sys/kern/kern_timeout.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'sys/kern/kern_timeout.c') diff --git a/sys/kern/kern_timeout.c b/sys/kern/kern_timeout.c index 13822fd..1d5d24f 100644 --- a/sys/kern/kern_timeout.c +++ b/sys/kern/kern_timeout.c @@ -1096,6 +1096,10 @@ _callout_stop_safe(struct callout *c, int safe) struct lock_class *class; int direct, sq_locked, use_lock; + if (safe) + WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, c->c_lock, + "calling %s", __func__); + /* * Some old subsystems don't hold Giant while running a callout_stop(), * so just discard this check for the moment. -- cgit v1.1