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: Dan Carpenter <dan.carpenter@oracle.com>
This commit is contained in:
Родитель
44c44af2f4
Коммит
23291a044c
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче