General additional cleanup of VOP API for NFS ops - mainly NFS ignoring
the API for freeing up cnp's. This cleanup should not effect nominal operation one way or the other since NFS VOPs just happen to be called with flags that match what it actually does to the NAMEI components it gets. Still, if an NFS error occured, there was probably some memory leakage of NAMEI components with certain NFS VOP ops.
This commit is contained in:
parent
90b4b43dc1
commit
9bbfbe1685
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
|
||||
* $Id: nfs_vnops.c,v 1.120 1999/02/06 07:48:56 dillon Exp $
|
||||
* $Id: nfs_vnops.c,v 1.121 1999/02/13 08:01:59 dillon Exp $
|
||||
*/
|
||||
|
||||
|
||||
@ -1409,7 +1409,8 @@ nfs_create(ap)
|
||||
cache_enter(dvp, newvp, cnp);
|
||||
*ap->a_vpp = newvp;
|
||||
}
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
if (error || (cnp->cn_flags & SAVESTART) == 0)
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
VTONFS(dvp)->n_flag |= NMODIFIED;
|
||||
if (!wccflag)
|
||||
VTONFS(dvp)->n_attrstamp = 0;
|
||||
@ -1601,12 +1602,14 @@ nfs_rename(ap)
|
||||
}
|
||||
|
||||
out:
|
||||
VOP_ABORTOP(tdvp, tcnp);
|
||||
if (tdvp == tvp)
|
||||
vrele(tdvp);
|
||||
else
|
||||
vput(tdvp);
|
||||
if (tvp)
|
||||
vput(tvp);
|
||||
VOP_ABORTOP(fdvp, fcnp);
|
||||
vrele(fdvp);
|
||||
vrele(fvp);
|
||||
/*
|
||||
@ -1790,7 +1793,6 @@ nfs_symlink(ap)
|
||||
nfsm_reqdone;
|
||||
if (newvp)
|
||||
vput(newvp);
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
VTONFS(dvp)->n_flag |= NMODIFIED;
|
||||
if (!wccflag)
|
||||
VTONFS(dvp)->n_attrstamp = 0;
|
||||
@ -1799,6 +1801,12 @@ nfs_symlink(ap)
|
||||
*/
|
||||
if (error == EEXIST)
|
||||
error = 0;
|
||||
/*
|
||||
* cnp's buffer expected to be freed if SAVESTART not set or
|
||||
* if an error was returned.
|
||||
*/
|
||||
if (error || (cnp->cn_flags & SAVESTART) == 0)
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
return (error);
|
||||
}
|
||||
|
||||
@ -1883,7 +1891,8 @@ nfs_mkdir(ap)
|
||||
vrele(newvp);
|
||||
} else
|
||||
*ap->a_vpp = newvp;
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
if (error || (cnp->cn_flags & SAVESTART) == 0)
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
return (error);
|
||||
}
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
|
||||
* $Id: nfs_vnops.c,v 1.120 1999/02/06 07:48:56 dillon Exp $
|
||||
* $Id: nfs_vnops.c,v 1.121 1999/02/13 08:01:59 dillon Exp $
|
||||
*/
|
||||
|
||||
|
||||
@ -1409,7 +1409,8 @@ nfs_create(ap)
|
||||
cache_enter(dvp, newvp, cnp);
|
||||
*ap->a_vpp = newvp;
|
||||
}
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
if (error || (cnp->cn_flags & SAVESTART) == 0)
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
VTONFS(dvp)->n_flag |= NMODIFIED;
|
||||
if (!wccflag)
|
||||
VTONFS(dvp)->n_attrstamp = 0;
|
||||
@ -1601,12 +1602,14 @@ nfs_rename(ap)
|
||||
}
|
||||
|
||||
out:
|
||||
VOP_ABORTOP(tdvp, tcnp);
|
||||
if (tdvp == tvp)
|
||||
vrele(tdvp);
|
||||
else
|
||||
vput(tdvp);
|
||||
if (tvp)
|
||||
vput(tvp);
|
||||
VOP_ABORTOP(fdvp, fcnp);
|
||||
vrele(fdvp);
|
||||
vrele(fvp);
|
||||
/*
|
||||
@ -1790,7 +1793,6 @@ nfs_symlink(ap)
|
||||
nfsm_reqdone;
|
||||
if (newvp)
|
||||
vput(newvp);
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
VTONFS(dvp)->n_flag |= NMODIFIED;
|
||||
if (!wccflag)
|
||||
VTONFS(dvp)->n_attrstamp = 0;
|
||||
@ -1799,6 +1801,12 @@ nfs_symlink(ap)
|
||||
*/
|
||||
if (error == EEXIST)
|
||||
error = 0;
|
||||
/*
|
||||
* cnp's buffer expected to be freed if SAVESTART not set or
|
||||
* if an error was returned.
|
||||
*/
|
||||
if (error || (cnp->cn_flags & SAVESTART) == 0)
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
return (error);
|
||||
}
|
||||
|
||||
@ -1883,7 +1891,8 @@ nfs_mkdir(ap)
|
||||
vrele(newvp);
|
||||
} else
|
||||
*ap->a_vpp = newvp;
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
if (error || (cnp->cn_flags & SAVESTART) == 0)
|
||||
zfree(namei_zone, cnp->cn_pnbuf);
|
||||
return (error);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user