summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2008-11-04 15:10:50 +0100
committerTheodore Ts'o <tytso@mit.edu>2008-11-04 15:10:50 +0100
commitae2d9fb18e575ed37ffc241ece4bf68f0be4ae32 (patch)
tree89a063362d3cd6ee3ed6bd1f87515fdbaec71cca /fs
parentjbd2: deregister proc on failure in jbd2_journal_init_inode (diff)
downloadlinux-ae2d9fb18e575ed37ffc241ece4bf68f0be4ae32.tar.xz
linux-ae2d9fb18e575ed37ffc241ece4bf68f0be4ae32.zip
ext4: fix missing ext4_unlock_group in error path
If we try to free a block which is already freed, the code was returning without first unlocking the group. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/mballoc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index dfe17a134052..444ad998f72e 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -4441,6 +4441,7 @@ ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b,
else if (block >= (entry->start_blk + entry->count))
n = &(*n)->rb_right;
else {
+ ext4_unlock_group(sb, group);
ext4_error(sb, __func__,
"Double free of blocks %d (%d %d)\n",
block, entry->start_blk, entry->count);