diff --git a/fs/block_dev.c b/fs/block_dev.c index 9868b21b8ef945868fb6f91f14c1b55b62f7d1a7..7e891e08d0cee2184f5b136fc8dee554228d3b91 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1650,6 +1650,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) } } bdev->bd_openers++; + kobject_get(bdev->bd_part->holder_dir); if (for_part) bdev->bd_part_count++; if (mode & FMODE_WRITE) @@ -1925,6 +1926,7 @@ static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part) if (for_part) bdev->bd_part_count--; + kobject_put(bdev->bd_part->holder_dir); if (!--bdev->bd_openers) { WARN_ON_ONCE(bdev->bd_holders); sync_blockdev(bdev);