summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-03-17 18:22:25 +0000
committerart <art@openbsd.org>2002-03-17 18:22:25 +0000
commit93a3799b7570d6f9e9012691d55f80b45bc896a7 (patch)
treeb07eb8b0307893727313771e0a04ff5ecd80553e
parentUpdate. (diff)
downloadwireguard-openbsd-93a3799b7570d6f9e9012691d55f80b45bc896a7.tar.xz
wireguard-openbsd-93a3799b7570d6f9e9012691d55f80b45bc896a7.zip
Since LK_RECURSEFAIL and LK_CANRECURSE contradict each other
(although they are not opposites), avoid setting LK_CANRECURSE if LK_RECURSEFAIL is set in the caller.
-rw-r--r--sys/kern/vfs_vnops.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 728a5ba13f9..b6b836e490f 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_vnops.c,v 1.40 2002/03/14 01:27:06 millert Exp $ */
+/* $OpenBSD: vfs_vnops.c,v 1.41 2002/03/17 18:22:25 art Exp $ */
/* $NetBSD: vfs_vnops.c,v 1.20 1996/02/04 02:18:41 christos Exp $ */
/*
@@ -489,12 +489,12 @@ vn_select(fp, which, p)
* acquire requested lock.
*/
int
-vn_lock(vp, flags, p)
- struct vnode *vp;
- int flags;
- struct proc *p;
+vn_lock(struct vnode *vp, int flags, struct proc *p)
{
int error;
+
+ if ((flags & LK_RECURSEFAIL) == 0)
+ flags |= LK_CANRECURSE;
do {
if ((flags & LK_INTERLOCK) == 0)
@@ -505,7 +505,7 @@ vn_lock(vp, flags, p)
tsleep((caddr_t)vp, PINOD, "vn_lock", 0);
error = ENOENT;
} else {
- error = VOP_LOCK(vp, flags | LK_INTERLOCK | LK_CANRECURSE, p);
+ error = VOP_LOCK(vp, flags | LK_INTERLOCK, p);
if (error == 0)
return (error);
}