diff --git a/ext3-Fix-error-handling-on-inode-bitmap-corruption.patch b/ext3-Fix-error-handling-on-inode-bitmap-corruption.patch new file mode 100644 index 0000000..73cc522 --- /dev/null +++ b/ext3-Fix-error-handling-on-inode-bitmap-corruption.patch @@ -0,0 +1,40 @@ +From 1415dd8705394399d59a3df1ab48d149e1e41e77 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Thu, 8 Dec 2011 21:13:46 +0100 +Subject: [PATCH] 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 +Signed-off-by: Jan Kara +--- + fs/ext3/ialloc.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c +index 5c866e0..adae962 100644 +--- a/fs/ext3/ialloc.c ++++ b/fs/ext3/ialloc.c +@@ -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++; +-- +1.7.6.5 + diff --git a/kernel.spec b/kernel.spec index a4e875f..be37077 100644 --- a/kernel.spec +++ b/kernel.spec @@ -732,6 +732,7 @@ Patch21056: KVM-fix-device-assignment-permissions.patch Patch21065: Bluetooth-Add-support-for-BCM20702A0.patch Patch21071: ext4-Fix-error-handling-on-inode-bitmap-corruption.patch +Patch21072: ext3-Fix-error-handling-on-inode-bitmap-corruption.patch %endif @@ -1359,6 +1360,7 @@ ApplyPatch Bluetooth-Add-support-for-BCM20702A0.patch ApplyPatch KVM-fix-device-assignment-permissions.patch ApplyPatch ext4-Fix-error-handling-on-inode-bitmap-corruption.patch +ApplyPatch ext3-Fix-error-handling-on-inode-bitmap-corruption.patch # END OF PATCH APPLICATIONS @@ -2008,7 +2010,7 @@ fi %changelog * Tue Jan 10 2012 Josh Boyer -- Fix ext4 corrupted bitmap error path (pointed out by Eric Sandeen) +- Fix ext3/ext4 corrupted bitmap error path (pointed out by Eric Sandeen) * Fri Jan 06 2012 Josh Boyer 2.6.41.8-1 - Linux 3.1.8