diff options
author | 2018-03-20 15:45:32 +0000 | |
---|---|---|
committer | 2018-03-20 15:45:32 +0000 | |
commit | 8ed6e35ec4a629d7af0dd1b32a143cc56dbf5b66 (patch) | |
tree | 979b5704d9d51114b4884336ab234b802f8dc219 /sys/kern/kern_rwlock.c | |
parent | Avoid potentially calling strchr() on a NULL pointer in (diff) | |
download | wireguard-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.c | 10 |
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) |