]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - fs/block_dev.c
Merge branch 'for-5.2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj...
[thirdparty/linux.git] / fs / block_dev.c
index e6886c93c89dafbc17fd2d22c25035dddc178e13..749f5984425dd493b212e589f4b7389b38bf1bc9 100644 (file)
@@ -1406,20 +1406,27 @@ void check_disk_size_change(struct gendisk *disk, struct block_device *bdev,
  */
 int revalidate_disk(struct gendisk *disk)
 {
-       struct block_device *bdev;
        int ret = 0;
 
        if (disk->fops->revalidate_disk)
                ret = disk->fops->revalidate_disk(disk);
-       bdev = bdget_disk(disk, 0);
-       if (!bdev)
-               return ret;
 
-       mutex_lock(&bdev->bd_mutex);
-       check_disk_size_change(disk, bdev, ret == 0);
-       bdev->bd_invalidated = 0;
-       mutex_unlock(&bdev->bd_mutex);
-       bdput(bdev);
+       /*
+        * Hidden disks don't have associated bdev so there's no point in
+        * revalidating it.
+        */
+       if (!(disk->flags & GENHD_FL_HIDDEN)) {
+               struct block_device *bdev = bdget_disk(disk, 0);
+
+               if (!bdev)
+                       return ret;
+
+               mutex_lock(&bdev->bd_mutex);
+               check_disk_size_change(disk, bdev, ret == 0);
+               bdev->bd_invalidated = 0;
+               mutex_unlock(&bdev->bd_mutex);
+               bdput(bdev);
+       }
        return ret;
 }
 EXPORT_SYMBOL(revalidate_disk);