Skip to content

Commit

Permalink
block: grab a device refcount in disk_uevent
Browse files Browse the repository at this point in the history
[ Upstream commit 498dcc1 ]

Sending uevents requires the struct device to be alive.  To
ensure that grab the device refcount instead of just an inode
reference.

Fixes: bc359d0 ("block: add a disk_uevent helper")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210701081638.246552-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
Christoph Hellwig authored and gregkh committed Jul 20, 2021
1 parent ccdf7e0 commit 04c529e
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions block/genhd.c
Expand Up @@ -402,12 +402,12 @@ void disk_uevent(struct gendisk *disk, enum kobject_action action)
xa_for_each(&disk->part_tbl, idx, part) {
if (bdev_is_partition(part) && !bdev_nr_sectors(part))
continue;
if (!bdgrab(part))
if (!kobject_get_unless_zero(&part->bd_device.kobj))
continue;

rcu_read_unlock();
kobject_uevent(bdev_kobj(part), action);
bdput(part);
put_device(&part->bd_device);
rcu_read_lock();
}
rcu_read_unlock();
Expand Down

0 comments on commit 04c529e

Please sign in to comment.