mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
ext3: Fix error handling on inode bitmap corruption
When insert_inode_locked() fails in ext3_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 inode does not have I_NEW set. Fix the problem by jumping to fail: (instead of fail_drop:) which declares filesystem error and does not call unlock_new_inode(). Reviewed-by: Eric Sandeen <[email protected]> Signed-off-by: Jan Kara <[email protected]>
This commit is contained in:
parent
d03e1292c4
commit
1415dd8705
1 changed files with 6 additions and 2 deletions
|
|
@ -525,8 +525,12 @@ got:
|
|||
if (IS_DIRSYNC(inode))
|
||||
handle->h_sync = 1;
|
||||
if (insert_inode_locked(inode) < 0) {
|
||||
err = -EINVAL;
|
||||
goto fail_drop;
|
||||
/*
|
||||
* Likely a bitmap corruption causing inode to be allocated
|
||||
* twice.
|
||||
*/
|
||||
err = -EIO;
|
||||
goto fail;
|
||||
}
|
||||
spin_lock(&sbi->s_next_gen_lock);
|
||||
inode->i_generation = sbi->s_next_generation++;
|
||||
|
|
|
|||
Loading…
Reference in a new issue