• Qu Wenruo's avatar
    btrfs: check-integrity: Fix NULL pointer dereference for degraded mount · 9912bbf6
    Qu Wenruo authored
    Commit f8f84b2d ("btrfs: index check-integrity state hash by a dev_t")
    changed how btrfsic indexes device state.
    
    Now we need to access device->bdev->bd_dev, while for degraded mount
    it's completely possible to have device->bdev as NULL, thus it will
    trigger a NULL pointer dereference at mount time.
    
    Fix it by checking if the device is degraded before accessing
    device->bdev->bd_dev.
    
    There are a lot of other places accessing device->bdev->bd_dev, however
    the other call sites have either checked device->bdev, or the
    device->bdev is passed from btrfsic_map_block(), so it won't cause harm.
    
    Fixes: f8f84b2d ("btrfs: index check-integrity state hash by a dev_t")
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    9912bbf6
check-integrity.c 93.6 KB