]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: move transaction aborts to the error site in add_block_group_free_space()
authorDavid Sterba <dsterba@suse.com>
Tue, 19 Aug 2025 00:16:38 +0000 (20:16 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:34:32 +0000 (16:34 +0200)
[ Upstream commit b63c8c1ede4407835cb8c8bed2014d96619389f3 ]

Transaction aborts should be done next to the place the error happens,
which was not done in add_block_group_free_space().

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Stable-dep-of: 1f06c942aa70 ("btrfs: always abort transaction on failure to add block group to free space tree")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/free-space-tree.c

index a83c268f7f87cab1ded0eb7c47cf85a3f2358acd..11f488c096a6f1de655572a2ff76ec6d5bdd3a7c 100644 (file)
@@ -1456,16 +1456,17 @@ int add_block_group_free_space(struct btrfs_trans_handle *trans,
        path = btrfs_alloc_path();
        if (!path) {
                ret = -ENOMEM;
+               btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        ret = __add_block_group_free_space(trans, block_group, path);
+       if (ret)
+               btrfs_abort_transaction(trans, ret);
 
 out:
        btrfs_free_path(path);
        mutex_unlock(&block_group->free_space_lock);
-       if (ret)
-               btrfs_abort_transaction(trans, ret);
        return ret;
 }