summaryrefslogtreecommitdiff
path: root/disk-io.c
diff options
context:
space:
mode:
authorKenji Okimoto <okimoto@clear-code.com>2012-11-15 13:47:50 +0900
committerDavid Sterba <dsterba@suse.cz>2013-01-17 18:27:55 +0100
commit057d6ea34cf350d13be50fde9b024a9dacf548fe (patch)
treefa1e713aec840eac3939ef331a466c4df23df910 /disk-io.c
parent6b972e6fa59729018c49787680b45228bb0df16a (diff)
btrfs-progs: plug a memory leak reported by cppcheck
[src/btrfs/disk-io.c:462]: (error) Memory leak: log_root Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
Diffstat (limited to 'disk-io.c')
-rw-r--r--disk-io.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/disk-io.c b/disk-io.c
index 03952051..32f45dcd 100644
--- a/disk-io.c
+++ b/disk-io.c
@@ -458,8 +458,10 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root,
u64 blocknr = btrfs_super_log_root(disk_super);
struct btrfs_root *log_root = malloc(sizeof(struct btrfs_root));
- if (blocknr == 0)
+ if (blocknr == 0) {
+ free(log_root);
return 0;
+ }
blocksize = btrfs_level_size(tree_root,
btrfs_super_log_root_level(disk_super));
@@ -474,8 +476,12 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root,
fs_info->log_root_tree = log_root;
- if (!extent_buffer_uptodate(log_root->node))
+ if (!extent_buffer_uptodate(log_root->node)) {
+ free(log_root);
return -EIO;
+ }
+
+ free(log_root);
return 0;
}