scsi: remove the gendisk argument to scsi_ioctl
Now that blk_execute_rq does not take a gendisk argument there is no need to pass it through the scsi_ioctl callchain either. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Link: https://lore.kernel.org/r/20211126121802.2090656-6-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									b84ba30b6c
								
							
						
					
					
						commit
						a30e344132
					
				| @ -877,7 +877,7 @@ static long ch_ioctl(struct file *file, | ||||
| 	} | ||||
| 
 | ||||
| 	default: | ||||
| 		return scsi_ioctl(ch->device, NULL, file->f_mode, cmd, argp); | ||||
| 		return scsi_ioctl(ch->device, file->f_mode, cmd, argp); | ||||
| 
 | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -408,8 +408,7 @@ static int scsi_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr, | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int sg_io(struct scsi_device *sdev, struct gendisk *disk, | ||||
| 		struct sg_io_hdr *hdr, fmode_t mode) | ||||
| static int sg_io(struct scsi_device *sdev, struct sg_io_hdr *hdr, fmode_t mode) | ||||
| { | ||||
| 	unsigned long start_time; | ||||
| 	ssize_t ret = 0; | ||||
| @ -499,19 +498,12 @@ out_put_request: | ||||
| /**
 | ||||
|  * sg_scsi_ioctl  --  handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl | ||||
|  * @q:		request queue to send scsi commands down | ||||
|  * @disk:	gendisk to operate on (option) | ||||
|  * @mode:	mode used to open the file through which the ioctl has been | ||||
|  *		submitted | ||||
|  * @sic:	userspace structure describing the command to perform | ||||
|  * | ||||
|  * Send down the scsi command described by @sic to the device below | ||||
|  * the request queue @q.  If @file is non-NULL it's used to perform | ||||
|  * fine-grained permission checks that allow users to send down | ||||
|  * non-destructive SCSI commands.  If the caller has a struct gendisk | ||||
|  * available it should be passed in as @disk to allow the low level | ||||
|  * driver to use the information contained in it.  A non-NULL @disk | ||||
|  * is only allowed if the caller knows that the low level driver doesn't | ||||
|  * need it (e.g. in the scsi subsystem). | ||||
|  * the request queue @q. | ||||
|  * | ||||
|  * Notes: | ||||
|  *   -  This interface is deprecated - users should use the SG_IO | ||||
| @ -530,8 +522,8 @@ out_put_request: | ||||
|  *      Positive numbers returned are the compacted SCSI error codes (4 | ||||
|  *      bytes in one int) where the lowest byte is the SCSI status. | ||||
|  */ | ||||
| static int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, | ||||
| 		fmode_t mode, struct scsi_ioctl_command __user *sic) | ||||
| static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode, | ||||
| 		struct scsi_ioctl_command __user *sic) | ||||
| { | ||||
| 	enum { OMAX_SB_LEN = 16 };	/* For backward compatibility */ | ||||
| 	struct request *rq; | ||||
| @ -806,8 +798,8 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc, | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk, | ||||
| 		fmode_t mode, void __user *arg) | ||||
| static int scsi_cdrom_send_packet(struct scsi_device *sdev, fmode_t mode, | ||||
| 		void __user *arg) | ||||
| { | ||||
| 	struct cdrom_generic_command cgc; | ||||
| 	struct sg_io_hdr hdr; | ||||
| @ -847,7 +839,7 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk | ||||
| 	hdr.cmdp = ((struct cdrom_generic_command __user *) arg)->cmd; | ||||
| 	hdr.cmd_len = sizeof(cgc.cmd); | ||||
| 
 | ||||
| 	err = sg_io(sdev, disk, &hdr, mode); | ||||
| 	err = sg_io(sdev, &hdr, mode); | ||||
| 	if (err == -EFAULT) | ||||
| 		return -EFAULT; | ||||
| 
 | ||||
| @ -862,8 +854,8 @@ static int scsi_cdrom_send_packet(struct scsi_device *sdev, struct gendisk *disk | ||||
| 	return err; | ||||
| } | ||||
| 
 | ||||
| static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk, | ||||
| 		fmode_t mode, void __user *argp) | ||||
| static int scsi_ioctl_sg_io(struct scsi_device *sdev, fmode_t mode, | ||||
| 		void __user *argp) | ||||
| { | ||||
| 	struct sg_io_hdr hdr; | ||||
| 	int error; | ||||
| @ -871,7 +863,7 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk, | ||||
| 	error = get_sg_io_hdr(&hdr, argp); | ||||
| 	if (error) | ||||
| 		return error; | ||||
| 	error = sg_io(sdev, disk, &hdr, mode); | ||||
| 	error = sg_io(sdev, &hdr, mode); | ||||
| 	if (error == -EFAULT) | ||||
| 		return error; | ||||
| 	if (put_sg_io_hdr(&hdr, argp)) | ||||
| @ -882,7 +874,6 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk, | ||||
| /**
 | ||||
|  * scsi_ioctl - Dispatch ioctl to scsi device | ||||
|  * @sdev: scsi device receiving ioctl | ||||
|  * @disk: disk receiving the ioctl | ||||
|  * @mode: mode the block/char device is opened with | ||||
|  * @cmd: which ioctl is it | ||||
|  * @arg: data associated with ioctl | ||||
| @ -891,8 +882,8 @@ static int scsi_ioctl_sg_io(struct scsi_device *sdev, struct gendisk *disk, | ||||
|  * does not take a major/minor number as the dev field.  Rather, it takes | ||||
|  * a pointer to a &struct scsi_device. | ||||
|  */ | ||||
| int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode, | ||||
| 		int cmd, void __user *arg) | ||||
| int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd, | ||||
| 		void __user *arg) | ||||
| { | ||||
| 	struct request_queue *q = sdev->request_queue; | ||||
| 	struct scsi_sense_hdr sense_hdr; | ||||
| @ -927,11 +918,11 @@ int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode, | ||||
| 	case SG_EMULATED_HOST: | ||||
| 		return sg_emulated_host(q, arg); | ||||
| 	case SG_IO: | ||||
| 		return scsi_ioctl_sg_io(sdev, disk, mode, arg); | ||||
| 		return scsi_ioctl_sg_io(sdev, mode, arg); | ||||
| 	case SCSI_IOCTL_SEND_COMMAND: | ||||
| 		return sg_scsi_ioctl(q, disk, mode, arg); | ||||
| 		return sg_scsi_ioctl(q, mode, arg); | ||||
| 	case CDROM_SEND_PACKET: | ||||
| 		return scsi_cdrom_send_packet(sdev, disk, mode, arg); | ||||
| 		return scsi_cdrom_send_packet(sdev, mode, arg); | ||||
| 	case CDROMCLOSETRAY: | ||||
| 		return scsi_send_start_stop(sdev, 3); | ||||
| 	case CDROMEJECT: | ||||
|  | ||||
| @ -1574,7 +1574,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode, | ||||
| 
 | ||||
| 	if (is_sed_ioctl(cmd)) | ||||
| 		return sed_ioctl(sdkp->opal_dev, cmd, p); | ||||
| 	return scsi_ioctl(sdp, disk, mode, cmd, p); | ||||
| 	return scsi_ioctl(sdp, mode, cmd, p); | ||||
| } | ||||
| 
 | ||||
| static void set_media_not_present(struct scsi_disk *sdkp) | ||||
|  | ||||
| @ -1109,7 +1109,7 @@ sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp, | ||||
| 	case SCSI_IOCTL_SEND_COMMAND: | ||||
| 		if (atomic_read(&sdp->detaching)) | ||||
| 			return -ENODEV; | ||||
| 		return scsi_ioctl(sdp->device, NULL, filp->f_mode, cmd_in, p); | ||||
| 		return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p); | ||||
| 	case SG_SET_DEBUG: | ||||
| 		result = get_user(val, ip); | ||||
| 		if (result) | ||||
| @ -1165,7 +1165,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) | ||||
| 	ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p); | ||||
| 	if (ret != -ENOIOCTLCMD) | ||||
| 		return ret; | ||||
| 	return scsi_ioctl(sdp->device, NULL, filp->f_mode, cmd_in, p); | ||||
| 	return scsi_ioctl(sdp->device, filp->f_mode, cmd_in, p); | ||||
| } | ||||
| 
 | ||||
| static __poll_t | ||||
|  | ||||
| @ -561,8 +561,7 @@ static void sr_block_release(struct gendisk *disk, fmode_t mode) | ||||
| static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, | ||||
| 			  unsigned long arg) | ||||
| { | ||||
| 	struct gendisk *disk = bdev->bd_disk; | ||||
| 	struct scsi_cd *cd = scsi_cd(disk); | ||||
| 	struct scsi_cd *cd = scsi_cd(bdev->bd_disk); | ||||
| 	struct scsi_device *sdev = cd->device; | ||||
| 	void __user *argp = (void __user *)arg; | ||||
| 	int ret; | ||||
| @ -584,7 +583,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, | ||||
| 		if (ret != -ENOSYS) | ||||
| 			goto put; | ||||
| 	} | ||||
| 	ret = scsi_ioctl(sdev, disk, mode, cmd, argp); | ||||
| 	ret = scsi_ioctl(sdev, mode, cmd, argp); | ||||
| 
 | ||||
| put: | ||||
| 	scsi_autopm_put_device(sdev); | ||||
|  | ||||
| @ -3829,7 +3829,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg) | ||||
| 		break; | ||||
| 	} | ||||
| 
 | ||||
| 	retval = scsi_ioctl(STp->device, NULL, file->f_mode, cmd_in, p); | ||||
| 	retval = scsi_ioctl(STp->device, file->f_mode, cmd_in, p); | ||||
| 	if (!retval && cmd_in == SCSI_IOCTL_STOP_UNIT) { | ||||
| 		/* unload */ | ||||
| 		STp->rew_at_close = 0; | ||||
|  | ||||
| @ -45,8 +45,8 @@ typedef struct scsi_fctargaddress { | ||||
| 
 | ||||
| int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev, | ||||
| 		int cmd, bool ndelay); | ||||
| int scsi_ioctl(struct scsi_device *sdev, struct gendisk *disk, fmode_t mode, | ||||
| 		int cmd, void __user *arg); | ||||
| int scsi_ioctl(struct scsi_device *sdev, fmode_t mode, int cmd, | ||||
| 		void __user *arg); | ||||
| int get_sg_io_hdr(struct sg_io_hdr *hdr, const void __user *argp); | ||||
| int put_sg_io_hdr(const struct sg_io_hdr *hdr, void __user *argp); | ||||
| bool scsi_cmd_allowed(unsigned char *cmd, fmode_t mode); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user