diff --git a/[refs] b/[refs] index bc9ee75778d9..5a2ef7138f63 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6d9c85eb700bd3ac59e63bb9de463dea1aca084c +refs/heads/master: 32a9bb57d7c1fd04ae0f72b8f671501f000a0e9f diff --git a/trunk/fs/ext4/super.c b/trunk/fs/ext4/super.c index 33c398785e53..bd6e86aa82aa 100644 --- a/trunk/fs/ext4/super.c +++ b/trunk/fs/ext4/super.c @@ -3521,17 +3521,16 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) if (IS_ERR(root)) { ext4_msg(sb, KERN_ERR, "get root inode failed"); ret = PTR_ERR(root); + root = NULL; goto failed_mount4; } if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) { - iput(root); ext4_msg(sb, KERN_ERR, "corrupt root inode, run e2fsck"); goto failed_mount4; } sb->s_root = d_alloc_root(root); if (!sb->s_root) { ext4_msg(sb, KERN_ERR, "get root dentry failed"); - iput(root); ret = -ENOMEM; goto failed_mount4; } @@ -3647,6 +3646,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) goto failed_mount; failed_mount4: + iput(root); + sb->s_root = NULL; ext4_msg(sb, KERN_ERR, "mount failed"); destroy_workqueue(EXT4_SB(sb)->dio_unwritten_wq); failed_mount_wq: