summaryrefslogtreecommitdiffstats
path: root/sys/nfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/nfs')
-rw-r--r--sys/nfs/nfs_serv.c37
-rw-r--r--sys/nfs/nfs_vnops.c22
2 files changed, 25 insertions, 34 deletions
diff --git a/sys/nfs/nfs_serv.c b/sys/nfs/nfs_serv.c
index 4b577cb..b938de1 100644
--- a/sys/nfs/nfs_serv.c
+++ b/sys/nfs/nfs_serv.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_serv.c 8.3 (Berkeley) 1/12/94
- * $Id: nfs_serv.c,v 1.58 1998/02/09 06:10:35 eivind Exp $
+ * $Id: nfs_serv.c,v 1.59 1998/03/30 09:53:56 phk Exp $
*/
/*
@@ -1458,6 +1458,7 @@ nfsrv_create(nfsd, slp, procp, mrq)
vrele(nd.ni_startdir);
nqsrv_getl(nd.ni_dvp, ND_WRITE);
error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap);
+ vput(nd.ni_dvp);
if (!error) {
nfsrv_object_create(nd.ni_vp);
zfree(namei_zone, nd.ni_cnd.cn_pnbuf);
@@ -1485,7 +1486,9 @@ nfsrv_create(nfsd, slp, procp, mrq)
} else
vap->va_rdev = (dev_t)rdev;
nqsrv_getl(nd.ni_dvp, ND_WRITE);
- if (error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap)) {
+ error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap);
+ vput(nd.ni_dvp);
+ if (error) {
vrele(nd.ni_startdir);
nfsm_reply(0);
}
@@ -1666,6 +1669,7 @@ nfsrv_mknod(nfsd, slp, procp, mrq)
vrele(nd.ni_startdir);
nqsrv_getl(nd.ni_dvp, ND_WRITE);
error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap);
+ vput(nd.ni_dvp);
if (!error)
zfree(namei_zone, nd.ni_cnd.cn_pnbuf);
} else {
@@ -1677,7 +1681,9 @@ nfsrv_mknod(nfsd, slp, procp, mrq)
goto out;
}
nqsrv_getl(nd.ni_dvp, ND_WRITE);
- if (error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap)) {
+ error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap);
+ vput(nd.ni_dvp);
+ if (error) {
vrele(nd.ni_startdir);
goto out;
}
@@ -1800,12 +1806,13 @@ out:
} else {
VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd);
- if (nd.ni_dvp == vp)
- vrele(nd.ni_dvp);
- else
- vput(nd.ni_dvp);
- vput(vp);
}
+ if (nd.ni_dvp == vp)
+ vrele(nd.ni_dvp);
+ else
+ vput(nd.ni_dvp);
+ if (vp != NULLVP);
+ vput(vp);
}
if (dirp && v3) {
diraft_ret = VOP_GETATTR(dirp, &diraft, cred, procp);
@@ -2098,6 +2105,7 @@ out:
nqsrv_getl(vp, ND_WRITE);
nqsrv_getl(xp, ND_WRITE);
error = VOP_LINK(nd.ni_dvp, vp, &nd.ni_cnd);
+ vput(nd.ni_dvp);
} else {
VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd);
if (nd.ni_dvp == nd.ni_vp)
@@ -2209,6 +2217,7 @@ nfsrv_symlink(nfsd, slp, procp, mrq)
}
nqsrv_getl(nd.ni_dvp, ND_WRITE);
error = VOP_SYMLINK(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap, pathcp);
+ vput(nd.ni_dvp);
if (error)
vrele(nd.ni_startdir);
else {
@@ -2343,6 +2352,7 @@ nfsrv_mkdir(nfsd, slp, procp, mrq)
}
nqsrv_getl(nd.ni_dvp, ND_WRITE);
error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, vap);
+ vput(nd.ni_dvp);
if (!error) {
vp = nd.ni_vp;
bzero((caddr_t)fhp, sizeof(nfh));
@@ -2459,12 +2469,13 @@ out:
error = VOP_RMDIR(nd.ni_dvp, nd.ni_vp, &nd.ni_cnd);
} else {
VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd);
- if (nd.ni_dvp == nd.ni_vp)
- vrele(nd.ni_dvp);
- else
- vput(nd.ni_dvp);
- vput(vp);
}
+ if (nd.ni_dvp == nd.ni_vp)
+ vrele(nd.ni_dvp);
+ else
+ vput(nd.ni_dvp);
+ if (vp != NULLVP)
+ vput(vp);
if (dirp) {
diraft_ret = VOP_GETATTR(dirp, &diraft, cred, procp);
vrele(dirp);
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index c25fae5..a3d222f 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
- * $Id: nfs_vnops.c,v 1.82 1998/03/28 12:04:40 bde Exp $
+ * $Id: nfs_vnops.c,v 1.83 1998/03/30 09:54:32 phk Exp $
*/
@@ -1212,12 +1212,10 @@ nfs_mknodrpc(dvp, vpp, cnp, vap)
rdev = 0xffffffff;
else {
VOP_ABORTOP(dvp, cnp);
- vput(dvp);
return (EOPNOTSUPP);
}
if (error = VOP_GETATTR(dvp, &vattr, cnp->cn_cred, cnp->cn_proc)) {
VOP_ABORTOP(dvp, cnp);
- vput(dvp);
return (error);
}
nfsstats.rpccnt[NFSPROC_MKNOD]++;
@@ -1273,7 +1271,6 @@ nfs_mknodrpc(dvp, vpp, cnp, vap)
VTONFS(dvp)->n_flag |= NMODIFIED;
if (!wccflag)
VTONFS(dvp)->n_attrstamp = 0;
- vput(dvp);
return (error);
}
@@ -1337,7 +1334,6 @@ nfs_create(ap)
if (error = VOP_GETATTR(dvp, &vattr, cnp->cn_cred, cnp->cn_proc)) {
VOP_ABORTOP(dvp, cnp);
- vput(dvp);
return (error);
}
if (vap->va_vaflags & VA_EXCLUSIVE)
@@ -1410,7 +1406,6 @@ again:
VTONFS(dvp)->n_flag |= NMODIFIED;
if (!wccflag)
VTONFS(dvp)->n_attrstamp = 0;
- vput(dvp);
return (error);
}
@@ -1479,11 +1474,6 @@ nfs_remove(ap)
error = nfs_sillyrename(dvp, vp, cnp);
zfree(namei_zone, cnp->cn_pnbuf);
np->n_attrstamp = 0;
- vput(dvp);
- if (vp == dvp)
- vrele(vp);
- else
- vput(vp);
return (error);
}
@@ -1686,10 +1676,6 @@ nfs_link(ap)
if (vp->v_mount != tdvp->v_mount) {
VOP_ABORTOP(vp, cnp);
- if (tdvp == vp)
- vrele(tdvp);
- else
- vput(tdvp);
return (EXDEV);
}
@@ -1718,7 +1704,6 @@ nfs_link(ap)
VTONFS(vp)->n_attrstamp = 0;
if (!wccflag)
VTONFS(tdvp)->n_attrstamp = 0;
- vput(tdvp);
/*
* Kludge: Map EEXIST => 0 assuming that it is a reply to a retry.
*/
@@ -1788,7 +1773,6 @@ nfs_symlink(ap)
VTONFS(dvp)->n_flag |= NMODIFIED;
if (!wccflag)
VTONFS(dvp)->n_attrstamp = 0;
- vput(dvp);
/*
* Kludge: Map EEXIST => 0 assuming that it is a reply to a retry.
*/
@@ -1829,7 +1813,6 @@ nfs_mkdir(ap)
if (error = VOP_GETATTR(dvp, &vattr, cnp->cn_cred, cnp->cn_proc)) {
VOP_ABORTOP(dvp, cnp);
- vput(dvp);
return (error);
}
len = cnp->cn_namelen;
@@ -1882,7 +1865,6 @@ nfs_mkdir(ap)
} else
*ap->a_vpp = newvp;
zfree(namei_zone, cnp->cn_pnbuf);
- vput(dvp);
return (error);
}
@@ -1923,8 +1905,6 @@ nfs_rmdir(ap)
VTONFS(dvp)->n_attrstamp = 0;
cache_purge(dvp);
cache_purge(vp);
- vput(vp);
- vput(dvp);
/*
* Kludge: Map ENOENT => 0 assuming that you have a reply to a retry.
*/
OpenPOWER on IntegriCloud