From a5827f34f196636d6d3e42f48f9f463aa87ce3d7 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Tue, 10 Jan 2012 14:08:28 -0500 Subject: Fix ext4 corrupted bitmap error path (pointed out by Eric Sandeen) --- TODO | 1 + ...ix-error-handling-on-inode-bitmap-corruption.patch | 19 +++++++++++++++++++ kernel.spec | 4 ++++ 3 files changed, 24 insertions(+) create mode 100644 ext4-Fix-error-handling-on-inode-bitmap-corruption.patch diff --git a/TODO b/TODO index a1da2ce42..81389357f 100644 --- a/TODO +++ b/TODO @@ -10,6 +10,7 @@ drm-edid-try-harder-to-fix-up-broken-headers.patch Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch ext4-Support-check-none-nocheck-mount-options.patch +ext4-Fix-error-handling-on-inode-bitmap-corruption.patch **** Other stuff that should go upstream (in decreasing likelyhood) ************************************ diff --git a/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch b/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch new file mode 100644 index 000000000..e22a2b4ff --- /dev/null +++ b/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch @@ -0,0 +1,19 @@ +diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c +index 00beb4f..8fb6844 100644 +--- a/fs/ext4/ialloc.c ++++ b/fs/ext4/ialloc.c +@@ -885,8 +885,12 @@ got: + if (IS_DIRSYNC(inode)) + ext4_handle_sync(handle); + 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++; diff --git a/kernel.spec b/kernel.spec index 1f3d87312..4d3ccd310 100644 --- a/kernel.spec +++ b/kernel.spec @@ -752,6 +752,7 @@ Patch21045: nfs-client-freezer.patch Patch21065: Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch Patch21070: ext4-Support-check-none-nocheck-mount-options.patch +Patch21071: ext4-Fix-error-handling-on-inode-bitmap-corruption.patch # compat-wireless patches Patch50000: compat-wireless-config-fixups.patch @@ -1459,6 +1460,8 @@ ApplyPatch Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch ApplyPatch ext4-Support-check-none-nocheck-mount-options.patch +ApplyPatch ext4-Fix-error-handling-on-inode-bitmap-corruption.patch + # END OF PATCH APPLICATIONS %endif @@ -2295,6 +2298,7 @@ fi %changelog * Tue Jan 10 2012 Josh Boyer - Add patch to fix ext4 compatibility with ext2 mount option (rhbz 770172) +- Fix ext4 corrupted bitmap error path (pointed out by Eric Sandeen) * Thu Jan 05 2012 Adam Jackson - Disable unsupported DRI1-only DRM drivers: i810, r128, tdfx -- cgit