| From c1247b01a9f54915fc8b8cbb56daec0fad2be5fe Mon Sep 17 00:00:00 2001 |
| From: Josef Bacik <josef@toxicpanda.com> |
| Date: Thu, 13 Feb 2020 10:47:28 -0500 |
| Subject: [PATCH] btrfs: reset fs_root to NULL on error in open_ctree |
| |
| 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: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c |
| index 88e4c579cb4d..fd3dd9f7ad7c 100644 |
| --- a/fs/btrfs/disk-io.c |
| +++ b/fs/btrfs/disk-io.c |
| @@ -3196,6 +3196,7 @@ int 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; |
| } |
| |
| -- |
| 2.7.4 |
| |