Message ID | 20201126130422.92945-40-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/44] blk-cgroup: fix a hd_struct leak in blkcg_fill_root_iostats | expand |
On Thu 26-11-20 14:04:17, Christoph Hellwig wrote: > Pass the block_device actually needed instead of the hd_struct. > > Signed-off-by: Christoph Hellwig <hch@lst.de> Looks good. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > block/blk.h | 2 +- > block/genhd.c | 14 +++++++------- > block/partitions/core.c | 2 +- > 3 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/block/blk.h b/block/blk.h > index d5bf8f3a078186..9657c6da7c770c 100644 > --- a/block/blk.h > +++ b/block/blk.h > @@ -350,7 +350,7 @@ static inline void blk_queue_free_zone_bitmaps(struct request_queue *q) {} > > struct block_device *disk_map_sector_rcu(struct gendisk *disk, sector_t sector); > > -int blk_alloc_devt(struct hd_struct *part, dev_t *devt); > +int blk_alloc_devt(struct block_device *part, dev_t *devt); > void blk_free_devt(dev_t devt); > char *disk_name(struct gendisk *hd, int partno, char *buf); > #define ADDPART_FLAG_NONE 0 > diff --git a/block/genhd.c b/block/genhd.c > index a85ffd7385718d..89cd0ba8e3b84a 100644 > --- a/block/genhd.c > +++ b/block/genhd.c > @@ -559,8 +559,8 @@ static int blk_mangle_minor(int minor) > } > > /** > - * blk_alloc_devt - allocate a dev_t for a partition > - * @part: partition to allocate dev_t for > + * blk_alloc_devt - allocate a dev_t for a block device > + * @bdev: block device to allocate dev_t for > * @devt: out parameter for resulting dev_t > * > * Allocate a dev_t for block device. > @@ -572,14 +572,14 @@ static int blk_mangle_minor(int minor) > * CONTEXT: > * Might sleep. > */ > -int blk_alloc_devt(struct hd_struct *part, dev_t *devt) > +int blk_alloc_devt(struct block_device *bdev, dev_t *devt) > { > - struct gendisk *disk = part_to_disk(part); > + struct gendisk *disk = bdev->bd_disk; > int idx; > > /* in consecutive minor range? */ > - if (part->bdev->bd_partno < disk->minors) { > - *devt = MKDEV(disk->major, disk->first_minor + part->bdev->bd_partno); > + if (bdev->bd_partno < disk->minors) { > + *devt = MKDEV(disk->major, disk->first_minor + bdev->bd_partno); > return 0; > } > > @@ -735,7 +735,7 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk, > > disk->flags |= GENHD_FL_UP; > > - retval = blk_alloc_devt(disk->part0->bd_part, &devt); > + retval = blk_alloc_devt(disk->part0, &devt); > if (retval) { > WARN_ON(1); > return; > diff --git a/block/partitions/core.c b/block/partitions/core.c > index ecc3228a086956..4f823c4c733518 100644 > --- a/block/partitions/core.c > +++ b/block/partitions/core.c > @@ -392,7 +392,7 @@ static struct hd_struct *add_partition(struct gendisk *disk, int partno, > pdev->type = &part_type; > pdev->parent = ddev; > > - err = blk_alloc_devt(p, &devt); > + err = blk_alloc_devt(bdev, &devt); > if (err) > goto out_bdput; > pdev->devt = devt; > -- > 2.29.2 >
diff --git a/block/blk.h b/block/blk.h index d5bf8f3a078186..9657c6da7c770c 100644 --- a/block/blk.h +++ b/block/blk.h @@ -350,7 +350,7 @@ static inline void blk_queue_free_zone_bitmaps(struct request_queue *q) {} struct block_device *disk_map_sector_rcu(struct gendisk *disk, sector_t sector); -int blk_alloc_devt(struct hd_struct *part, dev_t *devt); +int blk_alloc_devt(struct block_device *part, dev_t *devt); void blk_free_devt(dev_t devt); char *disk_name(struct gendisk *hd, int partno, char *buf); #define ADDPART_FLAG_NONE 0 diff --git a/block/genhd.c b/block/genhd.c index a85ffd7385718d..89cd0ba8e3b84a 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -559,8 +559,8 @@ static int blk_mangle_minor(int minor) } /** - * blk_alloc_devt - allocate a dev_t for a partition - * @part: partition to allocate dev_t for + * blk_alloc_devt - allocate a dev_t for a block device + * @bdev: block device to allocate dev_t for * @devt: out parameter for resulting dev_t * * Allocate a dev_t for block device. @@ -572,14 +572,14 @@ static int blk_mangle_minor(int minor) * CONTEXT: * Might sleep. */ -int blk_alloc_devt(struct hd_struct *part, dev_t *devt) +int blk_alloc_devt(struct block_device *bdev, dev_t *devt) { - struct gendisk *disk = part_to_disk(part); + struct gendisk *disk = bdev->bd_disk; int idx; /* in consecutive minor range? */ - if (part->bdev->bd_partno < disk->minors) { - *devt = MKDEV(disk->major, disk->first_minor + part->bdev->bd_partno); + if (bdev->bd_partno < disk->minors) { + *devt = MKDEV(disk->major, disk->first_minor + bdev->bd_partno); return 0; } @@ -735,7 +735,7 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk, disk->flags |= GENHD_FL_UP; - retval = blk_alloc_devt(disk->part0->bd_part, &devt); + retval = blk_alloc_devt(disk->part0, &devt); if (retval) { WARN_ON(1); return; diff --git a/block/partitions/core.c b/block/partitions/core.c index ecc3228a086956..4f823c4c733518 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -392,7 +392,7 @@ static struct hd_struct *add_partition(struct gendisk *disk, int partno, pdev->type = &part_type; pdev->parent = ddev; - err = blk_alloc_devt(p, &devt); + err = blk_alloc_devt(bdev, &devt); if (err) goto out_bdput; pdev->devt = devt;
Pass the block_device actually needed instead of the hd_struct. Signed-off-by: Christoph Hellwig <hch@lst.de> --- block/blk.h | 2 +- block/genhd.c | 14 +++++++------- block/partitions/core.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-)