]> git.hungrycats.org Git - linux/commitdiff
[PATCH] FAT: remove validity check of FAT first entry
authorHirofumi Ogawa <hirofumi@mail.parknet.co.jp>
Wed, 20 Oct 2004 01:16:56 +0000 (18:16 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 20 Oct 2004 01:16:56 +0000 (18:16 -0700)
The low byte of FAT's first entry must have same value with media-field.

So, I added that validity check for some case. In fact, in some case
this check detected non-FAT filesystem.  But in real world,
unfortunately too many devices is writing a wrong value.

This patch removes that validity check.

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/fat/inode.c

index 3d345dd97b3cab674ea40d76252100ca5afa0249..a5ddd9c39f54d7be965e5d81d5cc84eee3239284 100644 (file)
@@ -804,7 +804,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
        struct msdos_sb_info *sbi;
        u16 logical_sector_size;
        u32 total_sectors, total_clusters, fat_clusters, rootdir_sectors;
-       int debug, first;
+       int debug;
        unsigned int media;
        long error;
        char buf[50];
@@ -1005,27 +1005,13 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
 
        brelse(bh);
 
-       /* validity check of FAT */
-       first = __fat_access(sb, 0, -1);
-       if (first < 0) {
-               error = first;
-               goto out_fail;
-       }
-       if (FAT_FIRST_ENT(sb, media) == first) {
-               /* all is as it should be */
-       } else if (media == 0xf8 && FAT_FIRST_ENT(sb, 0xfe) == first) {
-               /* bad, reported on pc9800 */
-       } else if (media == 0xf0 && FAT_FIRST_ENT(sb, 0xf8) == first) {
-               /* bad, reported with a MO disk on win95/me */
-       } else if (first == 0) {
-               /* bad, reported with a SmartMedia card */
-       } else {
-               if (!silent)
-                       printk(KERN_ERR "FAT: invalid first entry of FAT "
-                              "(0x%x != 0x%x)\n",
-                              FAT_FIRST_ENT(sb, media), first);
-               goto out_invalid;
-       }
+       /*
+        * The low byte of FAT's first entry must have same value with
+        * media-field.  But in real world, too many devices is
+        * writing wrong value.  So, removed that validity check.
+        *
+        * if (FAT_FIRST_ENT(sb, media) != first)
+        */
 
        error = -EINVAL;
        sprintf(buf, "cp%d", sbi->options.codepage);