summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_rwlock.c
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2018-03-20 15:45:32 +0000
committermpi <mpi@openbsd.org>2018-03-20 15:45:32 +0000
commit8ed6e35ec4a629d7af0dd1b32a143cc56dbf5b66 (patch)
tree979b5704d9d51114b4884336ab234b802f8dc219 /sys/kern/kern_rwlock.c
parentAvoid potentially calling strchr() on a NULL pointer in (diff)
downloadwireguard-openbsd-8ed6e35ec4a629d7af0dd1b32a143cc56dbf5b66.tar.xz
wireguard-openbsd-8ed6e35ec4a629d7af0dd1b32a143cc56dbf5b66.zip
Do not panic from ddb(4) when a lock requirement isn't fulfilled.
Extend the logic already present for panic() to any DDB-related operation such that if ddb(4) is entered because of a fault or other trap it is still possible to call 'boot reboot'. While here stop printing splassert() messages as well, to not fill the buffer. ok visa@, deraadt@
Diffstat (limited to 'sys/kern/kern_rwlock.c')
-rw-r--r--sys/kern/kern_rwlock.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c
index 88228a224a1..1bde7064757 100644
--- a/sys/kern/kern_rwlock.c
+++ b/sys/kern/kern_rwlock.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_rwlock.c,v 1.33 2017/12/18 10:05:43 mpi Exp $ */
+/* $OpenBSD: kern_rwlock.c,v 1.34 2018/03/20 15:45:32 mpi Exp $ */
/*
* Copyright (c) 2002, 2003 Artur Grabowski <art@openbsd.org>
@@ -236,8 +236,8 @@ retry:
unsigned long set = o | op->wait_set;
int do_sleep;
- /* Avoid deadlocks after panic */
- if (panicstr)
+ /* Avoid deadlocks after panic or in DDB */
+ if (panicstr || db_active)
return (0);
rw_enter_diag(rwl, flags);
@@ -287,8 +287,8 @@ _rw_exit(struct rwlock *rwl LOCK_FL_VARS)
int wrlock = owner & RWLOCK_WRLOCK;
unsigned long set;
- /* Avoid deadlocks after panic */
- if (panicstr)
+ /* Avoid deadlocks after panic or in DDB */
+ if (panicstr || db_active)
return;
if (wrlock)