Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Mar 2010 21:59:45 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r204675 - head/sys/fs/msdosfs
Message-ID:  <201003032159.o23Lxj04078024@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Wed Mar  3 21:59:45 2010
New Revision: 204675
URL: http://svn.freebsd.org/changeset/base/204675

Log:
  When returning error from msdosfs_lookup(), make sure that *vpp is NULL.
  lookup() KASSERTs this condition.
  
  Reported and tested by:	pho
  MFC after:	3 weeks

Modified:
  head/sys/fs/msdosfs/msdosfs_lookup.c

Modified: head/sys/fs/msdosfs/msdosfs_lookup.c
==============================================================================
--- head/sys/fs/msdosfs/msdosfs_lookup.c	Wed Mar  3 21:59:23 2010	(r204674)
+++ head/sys/fs/msdosfs/msdosfs_lookup.c	Wed Mar  3 21:59:45 2010	(r204675)
@@ -125,14 +125,14 @@ msdosfs_lookup_(struct vnode *vdp, struc
 #endif
 	dp = VTODE(vdp);
 	pmp = dp->de_pmp;
-	if (vpp != NULL)
-		*vpp = NULL;
 #ifdef MSDOSFS_DEBUG
 	printf("msdosfs_lookup(): vdp %p, dp %p, Attr %02x\n",
 	    vdp, dp, dp->de_Attributes);
 #endif
 
  restart:
+	if (vpp != NULL)
+		*vpp = NULL;
 	/*
 	 * If they are going after the . or .. entry in the root directory,
 	 * they won't find it.  DOS filesystems don't have them in the root
@@ -525,8 +525,10 @@ foundroot:
 	pdp = vdp;
 	if (flags & ISDOTDOT) {
 		error = msdosfs_deget_dotdot(pdp, cluster, blkoff, vpp);
-		if (error)
+		if (error) {
+			*vpp = NULL;
 			return (error);
+		}
 		/*
 		 * Recheck that ".." still points to the inode we
 		 * looked up before pdp lock was dropped.
@@ -534,6 +536,7 @@ foundroot:
 		error = msdosfs_lookup_(pdp, NULL, cnp, &inode1);
 		if (error) {
 			vput(*vpp);
+			*vpp = NULL;
 			return (error);
 		}
 		if (VTODE(*vpp)->de_inode != inode1) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003032159.o23Lxj04078024>