Btrfs, fix memory leaks in error paths

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 <jslaby@suse.cz>
Cc: linux-btrfs@vger.kernel.org
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Jiri Slaby 2010-01-06 16:57:22 +00:00 committed by Chris Mason
parent a038fab0cb
commit 2423fdfb96
2 changed files with 6 additions and 2 deletions

View File

@ -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;

View File

@ -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",