]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: qgroup: use goto style to handle errors in add_delayed_ref()
authorJunchao Sun <sunjunchao2870@gmail.com>
Fri, 7 Jun 2024 14:30:20 +0000 (22:30 +0800)
committerDavid Sterba <dsterba@suse.com>
Tue, 10 Sep 2024 14:51:18 +0000 (16:51 +0200)
Clean up resources using goto to get rid of repeated code.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Junchao Sun <sunjunchao2870@gmail.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/delayed-ref.c

index 06a9e0542d708b92f9bb790715bfa384e2aa4f7f..0bfa014b796dadb8dcadfbcdd63743bccda72889 100644 (file)
@@ -1005,18 +1005,13 @@ static int add_delayed_ref(struct btrfs_trans_handle *trans,
                return -ENOMEM;
 
        head_ref = kmem_cache_alloc(btrfs_delayed_ref_head_cachep, GFP_NOFS);
-       if (!head_ref) {
-               kmem_cache_free(btrfs_delayed_ref_node_cachep, node);
-               return -ENOMEM;
-       }
+       if (!head_ref)
+               goto free_node;
 
        if (btrfs_qgroup_full_accounting(fs_info) && !generic_ref->skip_qgroup) {
                record = kzalloc(sizeof(*record), GFP_NOFS);
-               if (!record) {
-                       kmem_cache_free(btrfs_delayed_ref_node_cachep, node);
-                       kmem_cache_free(btrfs_delayed_ref_head_cachep, head_ref);
-                       return -ENOMEM;
-               }
+               if (!record)
+                       goto free_head_ref;
        }
 
        init_delayed_ref_common(fs_info, node, generic_ref);
@@ -1052,6 +1047,12 @@ static int add_delayed_ref(struct btrfs_trans_handle *trans,
        if (qrecord_inserted)
                return btrfs_qgroup_trace_extent_post(trans, record);
        return 0;
+
+free_head_ref:
+       kmem_cache_free(btrfs_delayed_ref_head_cachep, head_ref);
+free_node:
+       kmem_cache_free(btrfs_delayed_ref_node_cachep, node);
+       return -ENOMEM;
 }
 
 /*