Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1239,10 +1239,11 @@ static int __must_check __add_reloc_root(struct btrfs_root *root)
			      node->bytenr, &node->rb_node);
	spin_unlock(&rc->reloc_root_tree.lock);
	if (rb_node) {
		kfree(node);
		btrfs_panic(root->fs_info, -EEXIST, "Duplicate root found "
			    "for start=%llu while inserting into relocation "
			    "tree\n");
		kfree(node);
		return -EEXIST;
	}

	list_add_tail(&root->root_list, &rc->reloc_roots);