Re: [PATCHv2] block: fix leaking minors of hidden disks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/7/22 12:38, Keith Busch wrote:
> From: Keith Busch <kbusch@xxxxxxxxxx>
> 
> The major/minor of a hidden gendisk is not propagated to the block
> device. This is required to suppress it from being visible. For these
> disks, we need to handle freeing the dynamic minor directly when it's
> released since bdev_free_inode() won't be able to.
> 
> Cc: Christoph Hellwig <hch@xxxxxx>
> Reported-by: Daniel Wagner <dwagner@xxxxxxx>
> Signed-off-by: Keith Busch <kbusch@xxxxxxxxxx>
> ---
> v1->v2:
> 
>    Actually check that the disk is hidden before assuming the minor needs
>    to be freed.
> 
>   block/genhd.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/block/genhd.c b/block/genhd.c
> index 514395361d7c..0afcdbb7575c 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -1166,6 +1166,8 @@ static void disk_release(struct device *dev)
>   	if (test_bit(GD_ADDED, &disk->state) && disk->fops->free_disk)
>   		disk->fops->free_disk(disk);
>   
> +	if ((disk->flags & GENHD_FL_HIDDEN) && disk->major == BLOCK_EXT_MAJOR)
> +		blk_free_ext_minor(disk->first_minor);
>   	iput(disk->part0->bd_inode);	/* frees the disk */
>   }
>   


Looks good.

Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx>

-ck





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux