UDF: During mount free lvid_bh before rescanning with different blocksize
authorAshish Sangwan <ashishsangwan2@gmail.com>
Sat, 21 Jul 2012 11:05:17 +0000 (16:35 +0530)
committerJan Kara <jack@suse.cz>
Tue, 14 Aug 2012 22:22:56 +0000 (00:22 +0200)
If s_lvid_bh is not freed and set to NULL before re-scanning partition
with default block size, we might end up using wrong lvid in case
s_lvid_bh is not updated in udf_load_logicalvolint during rescan.

Signed-off-by: Ashish Sangwan <ashish.sangwan2@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/super.c

index dcbf987..9f55f79 100644 (file)
@@ -2000,6 +2000,8 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
                        if (!silent)
                                pr_notice("Rescanning with blocksize %d\n",
                                          UDF_DEFAULT_BLOCKSIZE);
+                       brelse(sbi->s_lvid_bh);
+                       sbi->s_lvid_bh = NULL;
                        uopt.blocksize = UDF_DEFAULT_BLOCKSIZE;
                        ret = udf_load_vrs(sb, &uopt, silent, &fileset);
                }