summaryrefslogtreecommitdiffstats
path: root/fs/ext4/bitmap.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2012-08-10 13:57:52 -0400
committerTheodore Ts'o <tytso@mit.edu>2012-08-17 09:06:06 -0400
commit7a4c5de27efa4c2ecca87af0a3deea63446367e2 (patch)
tree9f56c68e86e9a379621ee49e0b6d05dae8b01f9e /fs/ext4/bitmap.c
parent7e731bc9a12339f344cddf82166b82633d99dd86 (diff)
downloadlinux-7a4c5de27efa4c2ecca87af0a3deea63446367e2.tar.gz
linux-7a4c5de27efa4c2ecca87af0a3deea63446367e2.tar.bz2
linux-7a4c5de27efa4c2ecca87af0a3deea63446367e2.zip
ext4: don't call ext4_error while block group is locked
While in ext4_validate_block_bitmap(), if an block allocation bitmap is found to be invalid, we call ext4_error() while the block group is still locked. This causes ext4_commit_super() to call a function which might sleep while in an atomic context. There's no need to keep the block group locked at this point, so hoist the ext4_error() call up to ext4_validate_block_bitmap() and release the block group spinlock before calling ext4_error(). The reported stack trace can be found at: http://article.gmane.org/gmane.comp.file-systems.ext4/33731 Reported-by: Dave Jones <davej@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Cc: stable@vger.kernel.org
Diffstat (limited to 'fs/ext4/bitmap.c')
-rw-r--r--fs/ext4/bitmap.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/fs/ext4/bitmap.c b/fs/ext4/bitmap.c
index f8716eab9995..5c2d1813ebe9 100644
--- a/fs/ext4/bitmap.c
+++ b/fs/ext4/bitmap.c
@@ -79,7 +79,6 @@ int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group,
if (provided == calculated)
return 1;
- ext4_error(sb, "Bad block bitmap checksum: block_group = %u", group);
return 0;
}