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

Commit ef6919c2 authored by Jan Kara's avatar Jan Kara
Browse files

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: default avatarEric Sandeen <sandeen@redhat.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 1415dd87
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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);