Skip to content

Commit

Permalink
Btrfs, fix memory leaks in error paths
Browse files Browse the repository at this point in the history
Stanse found 2 memory leaks in relocate_block_group and
__btrfs_map_block. cluster and multi are not freed/assigned on all
paths. Fix that.

Signed-off-by: Jiri Slaby <[email protected]>
Cc: [email protected]
Signed-off-by: Chris Mason <[email protected]>
  • Loading branch information
Jiri Slaby authored and chrismason-xx committed Jan 18, 2010
1 parent a038fab commit 2423fdf
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
4 changes: 3 additions & 1 deletion fs/btrfs/relocation.c
Original file line number Diff line number Diff line change
Expand Up @@ -3281,8 +3281,10 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
return -ENOMEM;

path = btrfs_alloc_path();
if (!path)
if (!path) {
kfree(cluster);
return -ENOMEM;
}

rc->extents_found = 0;
rc->extents_skipped = 0;
Expand Down
4 changes: 3 additions & 1 deletion fs/btrfs/volumes.c
Original file line number Diff line number Diff line change
Expand Up @@ -2649,8 +2649,10 @@ static int __btrfs_map_block(struct btrfs_mapping_tree *map_tree, int rw,
em = lookup_extent_mapping(em_tree, logical, *length);
read_unlock(&em_tree->lock);

if (!em && unplug_page)
if (!em && unplug_page) {
kfree(multi);
return 0;
}

if (!em) {
printk(KERN_CRIT "unable to find logical %llu len %llu\n",
Expand Down

0 comments on commit 2423fdf

Please sign in to comment.