svn commit: r229932 - stable/9/sys/fs/nullfs
Konstantin Belousov
kib at FreeBSD.org
Tue Jan 10 13:41:15 UTC 2012
Author: kib
Date: Tue Jan 10 13:41:14 2012
New Revision: 229932
URL: http://svn.freebsd.org/changeset/base/229932
Log:
MFC r229431:
Do the vput() for the lowervp in the null_nodeget() for error case too.
Several callers of null_nodeget() did the cleanup itself, but several
missed it, most prominent being null_bypass(). Remove the cleanup from
the callers, now null_nodeget() handles lowervp free itself.
Modified:
stable/9/sys/fs/nullfs/null_subr.c
stable/9/sys/fs/nullfs/null_vfsops.c
stable/9/sys/fs/nullfs/null_vnops.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/fs/nullfs/null_subr.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_subr.c Tue Jan 10 13:34:39 2012 (r229931)
+++ stable/9/sys/fs/nullfs/null_subr.c Tue Jan 10 13:41:14 2012 (r229932)
@@ -171,6 +171,8 @@ null_hashins(mp, xp)
static void
null_insmntque_dtr(struct vnode *vp, void *xp)
{
+
+ vput(((struct null_node *)xp)->null_lowervp);
vp->v_data = NULL;
vp->v_vnlock = &vp->v_lock;
free(xp, M_NULLFSNODE);
@@ -226,6 +228,7 @@ null_nodeget(mp, lowervp, vpp)
error = getnewvnode("null", mp, &null_vnodeops, &vp);
if (error) {
+ vput(lowervp);
free(xp, M_NULLFSNODE);
return (error);
}
Modified: stable/9/sys/fs/nullfs/null_vfsops.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_vfsops.c Tue Jan 10 13:34:39 2012 (r229931)
+++ stable/9/sys/fs/nullfs/null_vfsops.c Tue Jan 10 13:41:14 2012 (r229932)
@@ -157,8 +157,7 @@ nullfs_mount(struct mount *mp)
* Make sure the node alias worked
*/
if (error) {
- vrele(lowerrootvp);
- free(xmp, M_NULLFSMNT); /* XXX */
+ free(xmp, M_NULLFSMNT);
return (error);
}
Modified: stable/9/sys/fs/nullfs/null_vnops.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_vnops.c Tue Jan 10 13:34:39 2012 (r229931)
+++ stable/9/sys/fs/nullfs/null_vnops.c Tue Jan 10 13:41:14 2012 (r229932)
@@ -365,9 +365,7 @@ null_lookup(struct vop_lookup_args *ap)
vrele(lvp);
} else {
error = null_nodeget(dvp->v_mount, lvp, &vp);
- if (error)
- vput(lvp);
- else
+ if (error == 0)
*ap->a_vpp = vp;
}
}
@@ -809,9 +807,7 @@ null_vptocnp(struct vop_vptocnp_args *ap
NULLVPTOLOWERVP(*dvp);
#endif
VOP_UNLOCK(*dvp, 0); /* keep reference on *dvp */
- } else
- vput(ldvp);
-
+ }
vn_lock(vp, locked | LK_RETRY);
return (error);
}
More information about the svn-src-stable-9
mailing list