From: Josef Bacik Date: Fri, 24 Jan 2020 14:32:30 +0000 (-0500) Subject: btrfs: hold a ref on the root in __btrfs_run_defrag_inode X-Git-Tag: v5.10.7~2687^2~200 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=02162a0265eb56742442ef42c58db8739ddd9b94;p=platform%2Fkernel%2Flinux-rpi.git btrfs: hold a ref on the root in __btrfs_run_defrag_inode We are looking up an arbitrary inode, we need to hold a ref on the root while we're doing this. Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 1bc7665..27237bb 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -292,11 +292,16 @@ static int __btrfs_run_defrag_inode(struct btrfs_fs_info *fs_info, ret = PTR_ERR(inode_root); goto cleanup; } + if (!btrfs_grab_fs_root(inode_root)) { + ret = -ENOENT; + goto cleanup; + } key.objectid = defrag->ino; key.type = BTRFS_INODE_ITEM_KEY; key.offset = 0; inode = btrfs_iget(fs_info->sb, &key, inode_root); + btrfs_put_fs_root(inode_root); if (IS_ERR(inode)) { ret = PTR_ERR(inode); goto cleanup;