Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74f3c8af authored by Al Viro's avatar Al Viro
Browse files

[PATCH] switch scsi_cmd_ioctl() to passing fmode_t



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e915e872
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -914,7 +914,7 @@ static long bsg_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
	case SG_EMULATED_HOST:
	case SCSI_IOCTL_SEND_COMMAND: {
		void __user *uarg = (void __user *) arg;
		return scsi_cmd_ioctl(file, bd->queue, NULL, cmd, uarg);
		return scsi_cmd_ioctl(bd->queue, NULL, file->f_mode, cmd, uarg);
	}
	case SG_IO: {
		struct request *rq;
+5 −5
Original line number Diff line number Diff line
@@ -517,8 +517,8 @@ static inline int blk_send_start_stop(struct request_queue *q,
	return __blk_send_generic(q, bd_disk, GPCMD_START_STOP_UNIT, data);
}

int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
		   struct gendisk *bd_disk, unsigned int cmd, void __user *arg)
int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mode,
		   unsigned int cmd, void __user *arg)
{
	int err;

@@ -559,7 +559,7 @@ int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
			err = -EFAULT;
			if (copy_from_user(&hdr, arg, sizeof(hdr)))
				break;
			err = sg_io(q, bd_disk, &hdr, file ? file->f_mode : 0);
			err = sg_io(q, bd_disk, &hdr, mode);
			if (err == -EFAULT)
				break;

@@ -607,7 +607,7 @@ int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
			hdr.cmdp = ((struct cdrom_generic_command __user*) arg)->cmd;
			hdr.cmd_len = sizeof(cgc.cmd);

			err = sg_io(q, bd_disk, &hdr, file ? file->f_mode : 0);
			err = sg_io(q, bd_disk, &hdr, mode);
			if (err == -EFAULT)
				break;

@@ -631,7 +631,7 @@ int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
			if (!arg)
				break;

			err = sg_scsi_ioctl(q, bd_disk, file ? file->f_mode : 0, arg);
			err = sg_scsi_ioctl(q, bd_disk, mode, arg);
			break;
		case CDROMCLOSETRAY:
			err = blk_send_start_stop(q, bd_disk, 0x03);
+2 −1
Original line number Diff line number Diff line
@@ -1232,7 +1232,8 @@ static int cciss_ioctl(struct inode *inode, struct file *filep,
	case SG_EMULATED_HOST:
	case SG_IO:
	case SCSI_IOCTL_SEND_COMMAND:
		return scsi_cmd_ioctl(filep, disk->queue, disk, cmd, argp);
		return scsi_cmd_ioctl(disk->queue, disk,
				      filep ? filep->f_mode : 0, cmd, argp);

	/* scsi_cmd_ioctl would normally handle these, below, but */
	/* they aren't a good fit for cciss, as CD-ROMs are */
+1 −1
Original line number Diff line number Diff line
@@ -1729,7 +1729,7 @@ static int ub_bd_ioctl(struct inode *inode, struct file *filp,
	struct gendisk *disk = inode->i_bdev->bd_disk;
	void __user *usermem = (void __user *) arg;

	return scsi_cmd_ioctl(filp, disk->queue, disk, cmd, usermem);
	return scsi_cmd_ioctl(disk->queue, disk, filp ? filp->f_mode : 0, cmd, usermem);
}

/*
+2 −2
Original line number Diff line number Diff line
@@ -149,8 +149,8 @@ static void do_virtblk_request(struct request_queue *q)
static int virtblk_ioctl(struct inode *inode, struct file *filp,
			 unsigned cmd, unsigned long data)
{
	return scsi_cmd_ioctl(filp, inode->i_bdev->bd_disk->queue,
			      inode->i_bdev->bd_disk, cmd,
	return scsi_cmd_ioctl(inode->i_bdev->bd_disk->queue,
			      inode->i_bdev->bd_disk, filp->f_mode, cmd,
			      (void __user *)data);
}

Loading