[kernel] Fix ext4 corrupted bitmap error path (pointed out by Eric Sandeen)

Josh Boyer jwboyer at fedoraproject.org
Tue Jan 10 19:14:20 UTC 2012


commit a5827f34f196636d6d3e42f48f9f463aa87ce3d7
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Tue Jan 10 14:08:28 2012 -0500

    Fix ext4 corrupted bitmap error path (pointed out by Eric Sandeen)

 TODO                                               |    1 +
 ...error-handling-on-inode-bitmap-corruption.patch |   19 +++++++++++++++++++
 kernel.spec                                        |    4 ++++
 3 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/TODO b/TODO
index a1da2ce..8138935 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 0000000..e22a2b4
--- /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 1f3d873..4d3ccd3 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 <jwboyer at redhat.com>
 - 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 <ajax at redhat.com>
 - Disable unsupported DRI1-only DRM drivers: i810, r128, tdfx


More information about the scm-commits mailing list