diff options
author | 2018-04-25 15:53:08 +0000 | |
---|---|---|
committer | 2018-04-25 15:53:08 +0000 | |
commit | 4b99b9c0219f6bdb849f921d6d343d9dc6456025 (patch) | |
tree | bdd325bdbb61631f1e39a02d01c5e5ff44a36d0b | |
parent | vmd(8)'s early error messages weren't visible when started via /etc/rc (diff) | |
download | wireguard-openbsd-4b99b9c0219f6bdb849f921d6d343d9dc6456025.tar.xz wireguard-openbsd-4b99b9c0219f6bdb849f921d6d343d9dc6456025.zip |
Fix use of unreferenced vnode by decrementing the vnode's reference
count after unlocking. To improve consistency, use vput() instead of
VOP_UNLOCK() + vrele().
OK guenther@, mpi@, tedu@
-rw-r--r-- | sys/nfs/nfs_vnops.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c index 480f9879897..aacaed26dac 100644 --- a/sys/nfs/nfs_vnops.c +++ b/sys/nfs/nfs_vnops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: nfs_vnops.c,v 1.172 2018/04/17 07:45:24 mpi Exp $ */ +/* $OpenBSD: nfs_vnops.c,v 1.173 2018/04/25 15:53:08 visa Exp $ */ /* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */ /* @@ -986,9 +986,10 @@ nfsmout: nfs_cache_enter(dvp, NULL, cnp); } if (newvp != NULLVP) { - vrele(newvp); if (newvp != dvp) - VOP_UNLOCK(newvp, p); + vput(newvp); + else + vrele(newvp); } if ((cnp->cn_nameiop == CREATE || cnp->cn_nameiop == RENAME) && (flags & ISLASTCN) && error == ENOENT) { |