goto out;
                }
                err = ext4_init_block_bitmap(sb, bh, block_group, desc);
-               set_bitmap_uptodate(bh);
-               set_buffer_uptodate(bh);
-               set_buffer_verified(bh);
-               ext4_unlock_group(sb, block_group);
-               unlock_buffer(bh);
                if (err) {
+                       ext4_unlock_group(sb, block_group);
+                       unlock_buffer(bh);
                        ext4_error(sb, "Failed to init block bitmap for group "
                                   "%u: %d", block_group, err);
                        goto out;
                }
+               set_bitmap_uptodate(bh);
+               set_buffer_uptodate(bh);
+               set_buffer_verified(bh);
+               ext4_unlock_group(sb, block_group);
+               unlock_buffer(bh);
                goto verify;
        }
        ext4_unlock_group(sb, block_group);