diff options
author | Kenji Okimoto <okimoto@clear-code.com> | 2012-11-15 13:47:50 +0900 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2013-01-17 18:27:55 +0100 |
commit | 057d6ea34cf350d13be50fde9b024a9dacf548fe (patch) | |
tree | fa1e713aec840eac3939ef331a466c4df23df910 | |
parent | 6b972e6fa59729018c49787680b45228bb0df16a (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>
-rw-r--r-- | disk-io.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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; } |