tsleep() prints a stack trace when cold==2. The suspend/resume code has
authorderaadt <deraadt@openbsd.org>
Sat, 19 Feb 2022 23:56:18 +0000 (23:56 +0000)
committerderaadt <deraadt@openbsd.org>
Sat, 19 Feb 2022 23:56:18 +0000 (23:56 +0000)
phases where sleeps are not allowed, and this used to discover it.
msleep() needs the same check.

sys/kern/kern_synch.c

index e993131..d888cb2 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern_synch.c,v 1.181 2022/02/14 11:26:05 claudio Exp $        */
+/*     $OpenBSD: kern_synch.c,v 1.182 2022/02/19 23:56:18 deraadt Exp $        */
 /*     $NetBSD: kern_synch.c,v 1.37 1996/04/22 01:38:37 christos Exp $ */
 
 /*
@@ -222,6 +222,10 @@ msleep(const volatile void *ident, struct mutex *mtx, int priority,
        if (priority & PCATCH)
                KERNEL_ASSERT_LOCKED();
 
+#ifdef DDB
+       if (cold == 2)
+               db_stack_dump();
+#endif
        if (cold || panicstr) {
                /*
                 * After a panic, or during autoconfiguration,