From: Josef Bacik Date: Wed, 20 Nov 2019 19:46:11 +0000 (-0800) Subject: btrfs: hold a ref on the root in merge_reloc_roots X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ca575ad7215213f005a96814a01f3d231647f45;p=linux btrfs: hold a ref on the root in merge_reloc_roots We look up the corresponding root for the reloc root, we need to hold a ref while we're messing with it. Signed-off-by: Josef Bacik --- diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 19d69ce41f06..dfd3d9053301 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -2505,10 +2505,13 @@ again: if (btrfs_root_refs(&reloc_root->root_item) > 0) { root = read_fs_root(fs_info, reloc_root->root_key.offset); + if (!btrfs_grab_fs_root(root)) + BUG(); BUG_ON(IS_ERR(root)); BUG_ON(root->reloc_root != reloc_root); ret = merge_reloc_root(rc, root); + btrfs_put_fs_root(root); if (ret) { if (list_empty(&reloc_root->root_list)) list_add_tail(&reloc_root->root_list,