Skip to content

Commit

Permalink
Btrfs: fix possible memory leaks in open_ctree()
Browse files Browse the repository at this point in the history
Fix possible memory leaks in the following error handling paths:

read_tree_block()
btrfs_recover_log_trees
btrfs_commit_super()
btrfs_find_orphan_roots()
btrfs_cleanup_fs_roots()

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
  • Loading branch information
Wang Shilong authored and Chris Mason committed Apr 24, 2014
1 parent e60efa8 commit 28c16cb
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions fs/btrfs/disk-io.c
Original file line number Diff line number Diff line change
Expand Up @@ -2864,7 +2864,7 @@ int open_ctree(struct super_block *sb,
printk(KERN_ERR "BTRFS: failed to read log tree\n");
free_extent_buffer(log_tree_root->node);
kfree(log_tree_root);
goto fail_trans_kthread;
goto fail_qgroup;
}
/* returns with log_tree_root freed on success */
ret = btrfs_recover_log_trees(log_tree_root);
Expand All @@ -2873,24 +2873,24 @@ int open_ctree(struct super_block *sb,
"Failed to recover log tree");
free_extent_buffer(log_tree_root->node);
kfree(log_tree_root);
goto fail_trans_kthread;
goto fail_qgroup;
}

if (sb->s_flags & MS_RDONLY) {
ret = btrfs_commit_super(tree_root);
if (ret)
goto fail_trans_kthread;
goto fail_qgroup;
}
}

ret = btrfs_find_orphan_roots(tree_root);
if (ret)
goto fail_trans_kthread;
goto fail_qgroup;

if (!(sb->s_flags & MS_RDONLY)) {
ret = btrfs_cleanup_fs_roots(fs_info);
if (ret)
goto fail_trans_kthread;
goto fail_qgroup;

ret = btrfs_recover_relocation(tree_root);
if (ret < 0) {
Expand Down

0 comments on commit 28c16cb

Please sign in to comment.