aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChangwei Ge <[email protected]>2018-01-31 16:15:29 -0800
committerLinus Torvalds <[email protected]>2018-01-31 17:18:35 -0800
commite75ed71be4f2f7508bd7d1d993d34095a10ca447 (patch)
tree52500d9c656268adc73ed0b9904ffc4ac045d4d7
parentc4c2416ab0d656539cca5de4ae0a2ba8ec3d9eca (diff)
ocfs2: unlock bh_state if bg check fails
We should unlock bh_stat if bg->bg_free_bits_count > bg->bg_bits Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Changwei Ge <[email protected]> Suggested-by: Jan Kara <[email protected]> Reviewed-by: Andrew Morton <[email protected]> Cc: Mark Fasheh <[email protected]> Cc: Joel Becker <[email protected]> Cc: Junxiao Bi <[email protected]> Cc: Joseph Qi <[email protected]> Cc: Changwei Ge <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--fs/ocfs2/suballoc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
index 2d8d31c85f45..d8f5f6ce99dc 100644
--- a/fs/ocfs2/suballoc.c
+++ b/fs/ocfs2/suballoc.c
@@ -2438,6 +2438,8 @@ static int ocfs2_block_group_clear_bits(handle_t *handle,
}
le16_add_cpu(&bg->bg_free_bits_count, num_bits);
if (le16_to_cpu(bg->bg_free_bits_count) > le16_to_cpu(bg->bg_bits)) {
+ if (undo_fn)
+ jbd_unlock_bh_state(group_bh);
return ocfs2_error(alloc_inode->i_sb, "Group descriptor # %llu has bit count %u but claims %u are freed. num_bits %d\n",
(unsigned long long)le64_to_cpu(bg->bg_blkno),
le16_to_cpu(bg->bg_bits),