Skip to content

Commit

Permalink
Btrfs: free all recorded tree blocks on error
Browse files Browse the repository at this point in the history
We've missed the 'free blocks' part on ENOMEM error.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
  • Loading branch information
Liu Bo authored and Josef Bacik committed Mar 4, 2013
1 parent aca1bba commit e1a1267
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions fs/btrfs/relocation.c
Original file line number Diff line number Diff line change
Expand Up @@ -2848,8 +2848,10 @@ int relocate_tree_blocks(struct btrfs_trans_handle *trans,
int err = 0;

path = btrfs_alloc_path();
if (!path)
return -ENOMEM;
if (!path) {
err = -ENOMEM;
goto out_path;
}

rb_node = rb_first(blocks);
while (rb_node) {
Expand Down Expand Up @@ -2888,10 +2890,11 @@ int relocate_tree_blocks(struct btrfs_trans_handle *trans,
rb_node = rb_next(rb_node);
}
out:
free_block_list(blocks);
err = finish_pending_nodes(trans, rc, path, err);

btrfs_free_path(path);
out_path:
free_block_list(blocks);
return err;
}

Expand Down

0 comments on commit e1a1267

Please sign in to comment.