diff options
author | 2002-03-17 18:22:25 +0000 | |
---|---|---|
committer | 2002-03-17 18:22:25 +0000 | |
commit | 93a3799b7570d6f9e9012691d55f80b45bc896a7 (patch) | |
tree | b07eb8b0307893727313771e0a04ff5ecd80553e | |
parent | Update. (diff) | |
download | wireguard-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.c | 12 |
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); } |