sb_read problem in hpfs
PATCH 1/1 sb_read problem in hpfs
Hi guys,
hpfs_read_super triggers calls to sb_bread (through hpfs_map_sector) before setting s_blocksize. This leads to a BUG() in grow_buffers.
This patch was tested lightly, hpfs_read_super completes properly when an hpfs FS is not present.
-chris
fs/hpfs/super.c Tue, 19 Feb 2002 22:28:37 -0500 renamed from fs/hpfs/super.c Tue, 19 Feb 2002 08:55:47 -0500 +2 -2
@@ -410,6 +410,8 @@ /*s->s_hpfs_mounting = 1;*/ dev = s->s_dev; set_blocksize(dev, 512); + s->s_blocksize = 512; + s->s_blocksize_bits = 9; s->s_hpfs_fs_size = -1; if (!(bootblock = hpfs_map_sector(s, 0, &bh0, 0))) goto bail1; if (!(superblock = hpfs_map_sector(s, 16, &bh1, 1))) goto bail2;
@@ -436,8 +438,6 @@ /* Fill superblock stuff */ s->s_magic = HPFS_SUPER_MAGIC; - s->s_blocksize = 512; - s->s_blocksize_bits = 9; s->s_op = &hpfs_sops; s->s_hpfs_root = superblock->root;
Quoted 5 lines · Chris Mason
Hi guys,
hpfs_read_supertriggers calls tosb_bread(throughhpfs_map_sector) before settings_blocksize. This leads to aBUG()ingrow_buffers.
Fsck. Merge problems when backporting to 2.4 - thanks for spotting. Yes, patch is correct. I'll look through the rest of thing and see what else is missing.
Quoted 27 lines
This patch was tested lightly,
hpfs_read_supercompletes properly when an hpfs FS is not present.(quoted diff) +0
-1-chrisfs/hpfs/super.c Tue, 19 Feb 2002 22:28:37 -0500 renamed from fs/hpfs/super.c Tue, 19 Feb 2002 08:55:47 -0500 +2
-2@@ -410,6 +410,8 @@ /*s->s_hpfs_mounting = 1;*/ dev = s->s_dev; set_blocksize(dev, 512); + s->s_blocksize = 512; + s->s_blocksize_bits = 9; s->s_hpfs_fs_size = -1; if (!(bootblock = hpfs_map_sector(s, 0, &bh0, 0))) goto bail1; if (!(superblock = hpfs_map_sector(s, 16, &bh1, 1))) goto bail2;@@ -436,8 +438,6 @@ /* Fill superblock stuff */ s->s_magic = HPFS_SUPER_MAGIC; - s->s_blocksize = 512; - s->s_blocksize_bits = 9; s->s_op = &hpfs_sops; s->s_hpfs_root = superblock->root;