Commit 23291a04 authored by Dan Carpenter's avatar Dan Carpenter Committed by Chris Mason

Btrfs: fix error handling in __add_reloc_root()

We dereferenced "node" in the error message after freeing it.  Also
btrfs_panic() can return so we should return an error code instead of
continuing.
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
parent 44c44af2
...@@ -1239,10 +1239,11 @@ static int __must_check __add_reloc_root(struct btrfs_root *root) ...@@ -1239,10 +1239,11 @@ static int __must_check __add_reloc_root(struct btrfs_root *root)
node->bytenr, &node->rb_node); node->bytenr, &node->rb_node);
spin_unlock(&rc->reloc_root_tree.lock); spin_unlock(&rc->reloc_root_tree.lock);
if (rb_node) { if (rb_node) {
kfree(node);
btrfs_panic(root->fs_info, -EEXIST, "Duplicate root found " btrfs_panic(root->fs_info, -EEXIST, "Duplicate root found "
"for start=%llu while inserting into relocation " "for start=%llu while inserting into relocation "
"tree\n"); "tree\n");
kfree(node);
return -EEXIST;
} }
list_add_tail(&root->root_list, &rc->reloc_roots); list_add_tail(&root->root_list, &rc->reloc_roots);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment