I made the following change:
diff -u inode.c.bad inode.c
--- inode.c.bad Sat Jan 2 08:32:01 1999
+++ inode.c Sat Jan 2 08:34:02 1999
@@ -365,9 +365,15 @@
MSDOS_SB(sb)->fsinfo_offset =
CF_LE_W(b->info_sector) * logical_sector_size + 0x1e0;
if (MSDOS_SB(sb)->fsinfo_offset + sizeof(MSDOS_SB(sb)->fsinfo_offset) >=
sizeof(struct fat_boot_sector)) {
+#if 0
printk("fat_read_super: Bad fsinfo_offset\n");
fat_brelse(sb, bh);
goto out_invalid;
+#else
+ printk("fat_read_super: Bad fsinfo_offset %d >= %d\n",
+ MSDOS_SB(sb)->fsinfo_offset +
+ sizeof(MSDOS_SB(sb)->fsinfo_offset),
+ sizeof(struct fat_boot_sector));
+#endif
}
fsinfo = (struct fat_boot_fsinfo *)
&bh->b_data[MSDOS_SB(sb)->fsinfo_offset];
This lets the VFAT-32 mount proceed but it displays the fsinfo offset and
the length of the fat_boot_sector. This new message displayed:
fat_read_super: Bad fsinfo_offset 996 >= 64
I don't know the intent of this change but it was introduced sometime after
2.1.131ac9 (the last kernel I've used regularly). The underlying filesystem
seems fine (I can do ls, df, etc) so it appears this sanity test is faulty.
-Ben McCann
1. Perhaps 'healthy' is overly generous but Windoze scandisk is happy....
----- Ben McCann Indus River Networks 31 Nagog Park Acton, MA, 01720 email: bmccann@indusriver.com web: www.indusriver.com phone: (978) 266-8140 fax: (978) 266-8111- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/