Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c19204b0 authored by Josef Bacik's avatar Josef Bacik Committed by Theodore Ts'o
Browse files

ext4: don't use ext4_error in ext4_check_descriptors



Because ext4_check_descriptors is called at mount time you can't use ext4_error
as it calls ext4_commit_sb, which since the sb isn't all the way initialized
causes bad things to happen (ie a panic).  This patch changes the ext4_error's
to printk's to keep this problem from happening.  Thanks much,

Signed-off-by: default avatarJosef Bacik <jbacik@redhat.com>
Signed-off-by: default avatarMingming Cao <cmm@us.ibm.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 8753e88f
Loading
Loading
Loading
Loading
+13 −16
Original line number Diff line number Diff line
@@ -1484,33 +1484,30 @@ static int ext4_check_descriptors(struct super_block *sb)
		block_bitmap = ext4_block_bitmap(sb, gdp);
		if (block_bitmap < first_block || block_bitmap > last_block)
		{
			ext4_error (sb, "ext4_check_descriptors",
				    "Block bitmap for group %lu"
				    " not in group (block %llu)!",
				    i, block_bitmap);
			printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
			       "Block bitmap for group %lu not in group "
			       "(block %llu)!", i, block_bitmap);
			return 0;
		}
		inode_bitmap = ext4_inode_bitmap(sb, gdp);
		if (inode_bitmap < first_block || inode_bitmap > last_block)
		{
			ext4_error (sb, "ext4_check_descriptors",
				    "Inode bitmap for group %lu"
				    " not in group (block %llu)!",
				    i, inode_bitmap);
			printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
			       "Inode bitmap for group %lu not in group "
			       "(block %llu)!", i, inode_bitmap);
			return 0;
		}
		inode_table = ext4_inode_table(sb, gdp);
		if (inode_table < first_block ||
		    inode_table + sbi->s_itb_per_group - 1 > last_block)
		{
			ext4_error (sb, "ext4_check_descriptors",
				    "Inode table for group %lu"
				    " not in group (block %llu)!",
				    i, inode_table);
			printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
			       "Inode table for group %lu not in group "
			       "(block %llu)!", i, inode_table);
			return 0;
		}
		if (!ext4_group_desc_csum_verify(sbi, i, gdp)) {
			ext4_error(sb, __func__,
			printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
			       "Checksum for group %lu failed (%u!=%u)\n",
			       i, le16_to_cpu(ext4_group_desc_csum(sbi, i,
			       gdp)), le16_to_cpu(gdp->bg_checksum));