Commit 5dfd31d1 authored by Hirofumi Ogawa's avatar Hirofumi Ogawa Committed by Linus Torvalds

[PATCH] FAT: remove validity check of FAT first entry

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: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 97a28b9a
...@@ -804,7 +804,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, ...@@ -804,7 +804,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
struct msdos_sb_info *sbi; struct msdos_sb_info *sbi;
u16 logical_sector_size; u16 logical_sector_size;
u32 total_sectors, total_clusters, fat_clusters, rootdir_sectors; u32 total_sectors, total_clusters, fat_clusters, rootdir_sectors;
int debug, first; int debug;
unsigned int media; unsigned int media;
long error; long error;
char buf[50]; char buf[50];
...@@ -1005,27 +1005,13 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, ...@@ -1005,27 +1005,13 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
brelse(bh); brelse(bh);
/* validity check of FAT */ /*
first = __fat_access(sb, 0, -1); * The low byte of FAT's first entry must have same value with
if (first < 0) { * media-field. But in real world, too many devices is
error = first; * writing wrong value. So, removed that validity check.
goto out_fail; *
} * if (FAT_FIRST_ENT(sb, media) != first)
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;
}
error = -EINVAL; error = -EINVAL;
sprintf(buf, "cp%d", sbi->options.codepage); sprintf(buf, "cp%d", sbi->options.codepage);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment