summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvisa <visa@openbsd.org>2018-04-25 15:53:08 +0000
committervisa <visa@openbsd.org>2018-04-25 15:53:08 +0000
commit4b99b9c0219f6bdb849f921d6d343d9dc6456025 (patch)
treebdd325bdbb61631f1e39a02d01c5e5ff44a36d0b
parentvmd(8)'s early error messages weren't visible when started via /etc/rc (diff)
downloadwireguard-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.c7
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) {