summaryrefslogtreecommitdiff
path: root/cmds-check.c
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2016-01-06 15:37:06 +0100
committerDavid Sterba <dsterba@suse.com>2016-01-12 15:01:08 +0100
commit6aff5d74bdf1add66e27b876eb79074bc210599d (patch)
tree2086bd160efa1acc073135f7ed8b331abdfdf2b9 /cmds-check.c
parente0a28fa2fd9fdd570fc0e44e7f6f6743706cdc71 (diff)
btrfs-progs: handle errors in add_shared_node and fail in the caller
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'cmds-check.c')
-rw-r--r--cmds-check.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/cmds-check.c b/cmds-check.c
index 77982eeb..66ef0f23 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -1199,6 +1199,8 @@ static int add_shared_node(struct cache_tree *shared, u64 bytenr, u32 refs)
struct shared_node *node;
node = calloc(1, sizeof(*node));
+ if (!node)
+ return -ENOMEM;
node->cache.start = bytenr;
node->cache.size = 1;
cache_tree_init(&node->root_cache);
@@ -1206,8 +1208,8 @@ static int add_shared_node(struct cache_tree *shared, u64 bytenr, u32 refs)
node->refs = refs;
ret = insert_cache_extent(shared, &node->cache);
- BUG_ON(ret);
- return 0;
+
+ return ret;
}
static int enter_shared_node(struct btrfs_root *root, u64 bytenr, u32 refs,
@@ -1215,6 +1217,7 @@ static int enter_shared_node(struct btrfs_root *root, u64 bytenr, u32 refs,
{
struct shared_node *node;
struct shared_node *dest;
+ int ret;
if (level == wc->active_node)
return 0;
@@ -1222,7 +1225,8 @@ static int enter_shared_node(struct btrfs_root *root, u64 bytenr, u32 refs,
BUG_ON(wc->active_node <= level);
node = find_shared_node(&wc->shared, bytenr);
if (!node) {
- add_shared_node(&wc->shared, bytenr, refs);
+ ret = add_shared_node(&wc->shared, bytenr, refs);
+ BUG_ON(ret);
node = find_shared_node(&wc->shared, bytenr);
wc->nodes[level] = node;
wc->active_node = level;