Re: [PATCH] cdrom: do not call check_disk_change() inside cdrom_open()

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

 



On Fri, 2018-03-09 at 13:59 +0100, Maurizio Lombardi wrote:
> diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c
> index 7b8c636..a026211 100644
> --- a/drivers/block/paride/pcd.c
> +++ b/drivers/block/paride/pcd.c
> @@ -230,6 +230,8 @@ static int pcd_block_open(struct block_device *bdev, fmode_t mode)
>  	struct pcd_unit *cd = bdev->bd_disk->private_data;
>  	int ret;
>  
> +	check_disk_change(bdev);
> +
>  	mutex_lock(&pcd_mutex);
>  	ret = cdrom_open(&cd->info, bdev, mode);
>  	mutex_unlock(&pcd_mutex);
> diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
> index e36d160..8327478 100644
> --- a/drivers/cdrom/cdrom.c
> +++ b/drivers/cdrom/cdrom.c
> @@ -1152,9 +1152,6 @@ int cdrom_open(struct cdrom_device_info *cdi, struct block_device *bdev,
>  
>  	cd_dbg(CD_OPEN, "entering cdrom_open\n");
>  
> -	/* open is event synchronization point, check events first */
> -	check_disk_change(bdev);
> -
>  	/* if this was a O_NONBLOCK open and we should honor the flags,
>  	 * do a quick open without drive/disc integrity checks. */
>  	cdi->use_count++;
> diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c
> index 6495b03f..ae3a753 100644
> --- a/drivers/cdrom/gdrom.c
> +++ b/drivers/cdrom/gdrom.c
> @@ -497,6 +497,9 @@ static int gdrom_audio_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
>  static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode)
>  {
>  	int ret;
> +
> +	check_disk_change(bdev);
> +
>  	mutex_lock(&gdrom_mutex);
>  	ret = cdrom_open(gd.cd_info, bdev, mode);
>  	mutex_unlock(&gdrom_mutex);

I think there is a much more elegant solution, namely splitting cdrom_mutex
into two synchronization objects - one that protects 'cdrom_list' changes
and another one that protects cdrom_sysctl_settings.info changes. Had you
considered that alternative?

Thanks,

Bart.






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux