]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
btrfs: reset fs_root to NULL on error in open_ctree
authorJosef Bacik <josef@toxicpanda.com>
Thu, 13 Feb 2020 15:47:28 +0000 (10:47 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Feb 2020 16:23:40 +0000 (17:23 +0100)
commit 315bf8ef914f31d51d084af950703aa1e09a728c upstream.

While running my error injection script I hit a panic when we tried to
clean up the fs_root when freeing the fs_root.  This is because
fs_info->fs_root == PTR_ERR(-EIO), which isn't great.  Fix this by
setting fs_info->fs_root = NULL; if we fail to read the root.

CC: stable@vger.kernel.org # 4.4+
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/disk-io.c

index b6ef9c2e0f347be63610e993b98476c933fd9106..9c8c30bbef04aa1008622dac0a326310c5118bdc 100644 (file)
@@ -3200,6 +3200,7 @@ int __cold open_ctree(struct super_block *sb,
        if (IS_ERR(fs_info->fs_root)) {
                err = PTR_ERR(fs_info->fs_root);
                btrfs_warn(fs_info, "failed to read fs tree: %d", err);
+               fs_info->fs_root = NULL;
                goto fail_qgroup;
        }