From 9df3a1842dfe1d6ba1bc42b3f7fc7a7dfd0eeb27 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Fri, 24 Dec 2004 04:47:06 +0000 Subject: [PATCH] Make sure ntfs_lookup() has the correct side effects by ensuring that *vpp is NULLd out if a non-zero return occurs. Reported-by: Dmitri Nikulin --- sys/vfs/ntfs/ntfs_vnops.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/vfs/ntfs/ntfs_vnops.c b/sys/vfs/ntfs/ntfs_vnops.c index d0735421bf..1ab6685c33 100644 --- a/sys/vfs/ntfs/ntfs_vnops.c +++ b/sys/vfs/ntfs/ntfs_vnops.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.19 2004/11/12 00:09:38 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.20 2004/12/24 04:47:06 dillon Exp $ * */ @@ -717,6 +717,8 @@ ntfs_lookup(struct vop_lookup_args *ap) (int)cnp->cn_namelen, cnp->cn_nameptr, cnp->cn_namelen, dip->i_number, lockparent, wantparent)); + *ap->a_vpp = NULL; + if (cnp->cn_namelen == 1 && cnp->cn_nameptr[0] == '.') { dprintf(("ntfs_lookup: faking . directory in %d\n", dip->i_number)); @@ -751,7 +753,8 @@ ntfs_lookup(struct vop_lookup_args *ap) if (lockparent) { error = VN_LOCK(dvp, LK_EXCLUSIVE, cnp->cn_td); if (error) { - vput( *(ap->a_vpp) ); + vput(*ap->a_vpp); + *ap->a_vpp = NULL; return (error); } cnp->cn_flags &= ~CNP_PDIRUNLOCK; -- 2.41.0