svn commit: r268629 - stable/10/sbin/fsck_msdosfs

Pedro F. Giffuni pfg at FreeBSD.org
Mon Jul 14 20:07:23 UTC 2014


Author: pfg
Date: Mon Jul 14 20:07:23 2014
New Revision: 268629
URL: http://svnweb.freebsd.org/changeset/base/268629

Log:
  fsck_msdosfs: be a bit more permissive
  
  The free space value in the FSInfo block is merely unitialized when it is
  0xffffffff. This fixes a bug found in NetBSD.
  
  It must be noted that we never supported all the checks that NetBSD does
  as some of them would cause failures with a freshly created FAT32
  from MS-Windows.
  
  While here, bring some space fixes.
  
  Obtained from:	NetBSD (rev. 1.22)

Modified:
  stable/10/sbin/fsck_msdosfs/fat.c

Modified: stable/10/sbin/fsck_msdosfs/fat.c
==============================================================================
--- stable/10/sbin/fsck_msdosfs/fat.c	Mon Jul 14 19:16:49 2014	(r268628)
+++ stable/10/sbin/fsck_msdosfs/fat.c	Mon Jul 14 20:07:23 2014	(r268629)
@@ -242,7 +242,7 @@ readfat(int fs, struct bootblock *boot, 
 			ret |= FSDIRTY;
 		else {
 			/* just some odd byte sequence in FAT */
-				
+
 			switch (boot->ClustMask) {
 			case CLUST32_MASK:
 				pwarn("%s (%02x%02x%02x%02x%02x%02x%02x%02x)\n",
@@ -262,7 +262,7 @@ readfat(int fs, struct bootblock *boot, 
 				break;
 			}
 
-	
+
 			if (ask(1, "Correct"))
 				ret |= FSFIXFAT;
 		}
@@ -653,7 +653,7 @@ checklost(int dosfs, struct bootblock *b
 	cl_t head;
 	int mod = FSOK;
 	int ret;
-	
+
 	for (head = CLUST_FIRST; head < boot->NumClusters; head++) {
 		/* find next untravelled chain */
 		if (fat[head].head != head
@@ -677,8 +677,9 @@ checklost(int dosfs, struct bootblock *b
 
 	if (boot->bpbFSInfo) {
 		ret = 0;
-		if (boot->FSFree != boot->NumFree) {
-			pwarn("Free space in FSInfo block (%d) not correct (%d)\n",
+		if (boot->FSFree != 0xffffffffU &&
+		    boot->FSFree != boot->NumFree) {
+			pwarn("Free space in FSInfo block (%u) not correct (%u)\n",
 			      boot->FSFree, boot->NumFree);
 			if (ask(1, "Fix")) {
 				boot->FSFree = boot->NumFree;


More information about the svn-src-all mailing list