summaryrefslogtreecommitdiff
path: root/fs/block_dev.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2019-06-26 14:39:34 +0300
committerMark Brown <broonie@kernel.org>2019-06-26 14:39:34 +0300
commit53c8b29abe42e5601cfa0ea5962532f0cfdec8a0 (patch)
treecad53f42ce7a03c39a984bcdbcc42cd47f1af6f9 /fs/block_dev.c
parente3303268f9cfa4eb7c2217df471417d4327109fd (diff)
parent4b972a01a7da614b4796475f933094751a295a2f (diff)
downloadlinux-53c8b29abe42e5601cfa0ea5962532f0cfdec8a0.tar.xz
Merge tag 'v5.2-rc6' into asoc-5.3
Linux 5.2-rc6
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r--fs/block_dev.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 0f7552a87d54..749f5984425d 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0-only
/*
* linux/fs/block_dev.c
*
@@ -1405,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);