summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_rwlock.c
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2013-05-06 16:37:55 +0000
committertedu <tedu@openbsd.org>2013-05-06 16:37:55 +0000
commitf6126badfa6a39d93e56856c718baad6b0e50cd3 (patch)
treec252c6335c3d3a895eb02b3bbaf70a12f4f50f7b /sys/kern/kern_rwlock.c
parentactually show list of mismatched for loops when a fatal error occurs. (diff)
downloadwireguard-openbsd-f6126badfa6a39d93e56856c718baad6b0e50cd3.tar.xz
wireguard-openbsd-f6126badfa6a39d93e56856c718baad6b0e50cd3.zip
restore original gangster lockstatus return values for compat
Diffstat (limited to 'sys/kern/kern_rwlock.c')
-rw-r--r--sys/kern/kern_rwlock.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c
index 596f302308b..27ad632e806 100644
--- a/sys/kern/kern_rwlock.c
+++ b/sys/kern/kern_rwlock.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_rwlock.c,v 1.19 2013/05/01 17:18:55 tedu Exp $ */
+/* $OpenBSD: kern_rwlock.c,v 1.20 2013/05/06 16:37:55 tedu Exp $ */
/*
* Copyright (c) 2002, 2003 Artur Grabowski <art@openbsd.org>
@@ -256,7 +256,11 @@ rw_exit(struct rwlock *rwl)
int
rw_status(struct rwlock *rwl)
{
- return (rwl->rwl_owner != 0L);
+ if (rwl->rwl_owner & RWLOCK_WRLOCK)
+ return RW_WRITE;
+ if (rwl->rwl_owner)
+ return RW_READ;
+ return (0);
}
#ifdef DIAGNOSTIC