Merge tag 'pm-5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
[linux-2.6-microblaze.git] / fs / btrfs / block-rsv.c
index bc920af..04a6226 100644 (file)
@@ -426,6 +426,14 @@ void btrfs_init_global_block_rsv(struct btrfs_fs_info *fs_info)
        fs_info->delayed_block_rsv.space_info = space_info;
        fs_info->delayed_refs_rsv.space_info = space_info;
 
+       /*
+        * Our various recovery options can leave us with NULL roots, so check
+        * here and just bail before we go dereferencing NULLs everywhere.
+        */
+       if (!fs_info->extent_root || !fs_info->csum_root ||
+           !fs_info->dev_root || !fs_info->chunk_root || !fs_info->tree_root)
+               return;
+
        fs_info->extent_root->block_rsv = &fs_info->delayed_refs_rsv;
        fs_info->csum_root->block_rsv = &fs_info->delayed_refs_rsv;
        fs_info->dev_root->block_rsv = &fs_info->global_block_rsv;