mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
ext2: Fix error handling on inode bitmap corruption
When insert_inode_locked() fails in ext2_new_inode() it most likely means inode bitmap got corrupted and we allocated again inode which is already in use. Also doing unlock_new_inode() during error recovery is wrong since the inode does not have I_NEW set. Fix the problem by informing about filesystem error and jumping to fail: (instead of fail_drop:) which doesn't call unlock_new_inode(). Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
1415dd8705
commit
ef6919c283
@ -573,8 +573,11 @@ got:
|
||||
inode->i_generation = sbi->s_next_generation++;
|
||||
spin_unlock(&sbi->s_next_gen_lock);
|
||||
if (insert_inode_locked(inode) < 0) {
|
||||
err = -EINVAL;
|
||||
goto fail_drop;
|
||||
ext2_error(sb, "ext2_new_inode",
|
||||
"inode number already in use - inode=%lu",
|
||||
(unsigned long) ino);
|
||||
err = -EIO;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
dquot_initialize(inode);
|
||||
|
Loading…
Reference in New Issue
Block a user