Patch from Jiri Slaby
2010-Mar-06 14:29 UTC
[linuxtv-commits] [git:v4l-dvb/master] Btrfs, fix memory leaks in error paths
From: Jiri Slaby <jslaby-AlSwsSmVLrQ@public.gmane.org>
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-AlSwsSmVLrQ@public.gmane.org>
Cc: linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Signed-off-by: Chris Mason
<chris.mason-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
fs/btrfs/relocation.c | 4 +++-
fs/btrfs/volumes.c | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
---
http://git.linuxtv.org/v4l-dvb.git?a=commitdiff;h=2423fdfb96e3f9ff3baeb6c4c78d74145547891d
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index a972868..ed3e4a2 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -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;
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 198cff2..220dad5 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2649,8 +2649,10 @@ again:
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",