• Josef Bacik's avatar
    btrfs: do not initialize dev stats if we have no dev_root · 82d62d06
    Josef Bacik authored
    Neal reported a panic trying to use -o rescue=all
    
      BUG: kernel NULL pointer dereference, address: 0000000000000030
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP PTI
      CPU: 0 PID: 4095 Comm: mount Not tainted 5.11.0-0.rc7.149.fc34.x86_64 #1
      RIP: 0010:btrfs_device_init_dev_stats+0x4c/0x1f0
      RSP: 0018:ffffa60285fbfb68 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff88b88f806498 RCX: ffff88b82e7a2a10
      RDX: ffffa60285fbfb97 RSI: ffff88b82e7a2a10 RDI: 0000000000000000
      RBP: ffff88b88f806b3c R08: 0000000000000000 R09: 0000000000000000
      R10: ffff88b82e7a2a10 R11: 0000000000000000 R12: ffff88b88f806a00
      R13: ffff88b88f806478 R14: ffff88b88f806a00 R15: ffff88b82e7a2a10
      FS:  00007f698be1ec40(0000) GS:ffff88b937e00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000030 CR3: 0000000092c9c006 CR4: 00000000003706f0
      Call Trace:
      ? btrfs_init_dev_stats+0x1f/0xf0
      btrfs_init_dev_stats+0x62/0xf0
      open_ctree+0x1019/0x15ff
      btrfs_mount_root.cold+0x13/0xfa
      legacy_get_tree+0x27/0x40
      vfs_get_tree+0x25/0xb0
      vfs_kern_mount.part.0+0x71/0xb0
      btrfs_mount+0x131/0x3d0
      ? legacy_get_tree+0x27/0x40
      ? btrfs_show_options+0x640/0x640
      legacy_get_tree+0x27/0x40
      vfs_get_tree+0x25/0xb0
      path_mount+0x441/0xa80
      __x64_sys_mount+0xf4/0x130
      do_syscall_64+0x33/0x40
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f698c04e52e
    
    This happens because we unconditionally attempt to initialize device
    stats on mount, but we may not have been able to read the device root.
    Fix this by skipping initializing the device stats if we do not have a
    device root.
    Reported-by: default avatarNeal Gompa <ngompa13@gmail.com>
    CC: stable@vger.kernel.org # 5.11+
    Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    82d62d06
volumes.c 213 KB