diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2007-08-27 15:38:10 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-10-21 07:47:14 -0400 |
| commit | 74f3c8aff36ad6552ea609c8b20bfd588fa16f38 (patch) | |
| tree | c046823751971ff37b66499282ca2b2e263cc71a | |
| parent | e915e872ed921d707bc32b3f2184d43abfa8c9e2 (diff) | |
[PATCH] switch scsi_cmd_ioctl() to passing fmode_t
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | block/bsg.c | 2 | ||||
| -rw-r--r-- | block/scsi_ioctl.c | 10 | ||||
| -rw-r--r-- | drivers/block/cciss.c | 3 | ||||
| -rw-r--r-- | drivers/block/ub.c | 2 | ||||
| -rw-r--r-- | drivers/block/virtio_blk.c | 4 | ||||
| -rw-r--r-- | drivers/cdrom/cdrom.c | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-floppy_ioctl.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/sd.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/st.c | 4 | ||||
| -rw-r--r-- | include/linux/blkdev.h | 4 |
10 files changed, 20 insertions, 18 deletions
diff --git a/block/bsg.c b/block/bsg.c index 2d36b127f384..e8bd2475682a 100644 --- a/block/bsg.c +++ b/block/bsg.c | |||
| @@ -914,7 +914,7 @@ static long bsg_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
| 914 | case SG_EMULATED_HOST: | 914 | case SG_EMULATED_HOST: |
| 915 | case SCSI_IOCTL_SEND_COMMAND: { | 915 | case SCSI_IOCTL_SEND_COMMAND: { |
| 916 | void __user *uarg = (void __user *) arg; | 916 | void __user *uarg = (void __user *) arg; |
| 917 | return scsi_cmd_ioctl(file, bd->queue, NULL, cmd, uarg); | 917 | return scsi_cmd_ioctl(bd->queue, NULL, file->f_mode, cmd, uarg); |
| 918 | } | 918 | } |
| 919 | case SG_IO: { | 919 | case SG_IO: { |
| 920 | struct request *rq; | 920 | struct request *rq; |
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c index 375e25df8adc..5963cf91a3a0 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c | |||
| @@ -517,8 +517,8 @@ static inline int blk_send_start_stop(struct request_queue *q, | |||
| 517 | return __blk_send_generic(q, bd_disk, GPCMD_START_STOP_UNIT, data); | 517 | return __blk_send_generic(q, bd_disk, GPCMD_START_STOP_UNIT, data); |
| 518 | } | 518 | } |
| 519 | 519 | ||
| 520 | int scsi_cmd_ioctl(struct file *file, struct request_queue *q, | 520 | int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mode, |
| 521 | struct gendisk *bd_disk, unsigned int cmd, void __user *arg) | 521 | unsigned int cmd, void __user *arg) |
| 522 | { | 522 | { |
| 523 | int err; | 523 | int err; |
| 524 | 524 | ||
| @@ -559,7 +559,7 @@ int scsi_cmd_ioctl(struct file *file, struct request_queue *q, | |||
| 559 | err = -EFAULT; | 559 | err = -EFAULT; |
| 560 | if (copy_from_user(&hdr, arg, sizeof(hdr))) | 560 | if (copy_from_user(&hdr, arg, sizeof(hdr))) |
| 561 | break; | 561 | break; |
| 562 | err = sg_io(q, bd_disk, &hdr, file ? file->f_mode : 0); | 562 | err = sg_io(q, bd_disk, &hdr, mode); |
| 563 | if (err == -EFAULT) | 563 | if (err == -EFAULT) |
| 564 | break; | 564 | break; |
| 565 | 565 | ||
| @@ -607,7 +607,7 @@ int scsi_cmd_ioctl(struct file *file, struct request_queue *q, | |||
| 607 | hdr.cmdp = ((struct cdrom_generic_command __user*) arg)->cmd; | 607 | hdr.cmdp = ((struct cdrom_generic_command __user*) arg)->cmd; |
| 608 | hdr.cmd_len = sizeof(cgc.cmd); | 608 | hdr.cmd_len = sizeof(cgc.cmd); |
| 609 | 609 | ||
| 610 | err = sg_io(q, bd_disk, &hdr, file ? file->f_mode : 0); | 610 | err = sg_io(q, bd_disk, &hdr, mode); |
| 611 | if (err == -EFAULT) | 611 | if (err == -EFAULT) |
| 612 | break; | 612 | break; |
| 613 | 613 | ||
| @@ -631,7 +631,7 @@ int scsi_cmd_ioctl(struct file *file, struct request_queue *q, | |||
| 631 | if (!arg) | 631 | if (!arg) |
| 632 | break; | 632 | break; |
| 633 | 633 | ||
| 634 | err = sg_scsi_ioctl(q, bd_disk, file ? file->f_mode : 0, arg); | 634 | err = sg_scsi_ioctl(q, bd_disk, mode, arg); |
| 635 | break; | 635 | break; |
| 636 | case CDROMCLOSETRAY: | 636 | case CDROMCLOSETRAY: |
| 637 | err = blk_send_start_stop(q, bd_disk, 0x03); | 637 | err = blk_send_start_stop(q, bd_disk, 0x03); |
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 1e1f9153000c..d9b1c15b8113 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
| @@ -1232,7 +1232,8 @@ static int cciss_ioctl(struct inode *inode, struct file *filep, | |||
| 1232 | case SG_EMULATED_HOST: | 1232 | case SG_EMULATED_HOST: |
| 1233 | case SG_IO: | 1233 | case SG_IO: |
| 1234 | case SCSI_IOCTL_SEND_COMMAND: | 1234 | case SCSI_IOCTL_SEND_COMMAND: |
| 1235 | return scsi_cmd_ioctl(filep, disk->queue, disk, cmd, argp); | 1235 | return scsi_cmd_ioctl(disk->queue, disk, |
| 1236 | filep ? filep->f_mode : 0, cmd, argp); | ||
| 1236 | 1237 | ||
| 1237 | /* scsi_cmd_ioctl would normally handle these, below, but */ | 1238 | /* scsi_cmd_ioctl would normally handle these, below, but */ |
| 1238 | /* they aren't a good fit for cciss, as CD-ROMs are */ | 1239 | /* they aren't a good fit for cciss, as CD-ROMs are */ |
diff --git a/drivers/block/ub.c b/drivers/block/ub.c index 85d41eb67c0b..bc04330f3683 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c | |||
| @@ -1729,7 +1729,7 @@ static int ub_bd_ioctl(struct inode *inode, struct file *filp, | |||
| 1729 | struct gendisk *disk = inode->i_bdev->bd_disk; | 1729 | struct gendisk *disk = inode->i_bdev->bd_disk; |
| 1730 | void __user *usermem = (void __user *) arg; | 1730 | void __user *usermem = (void __user *) arg; |
| 1731 | 1731 | ||
| 1732 | return scsi_cmd_ioctl(filp, disk->queue, disk, cmd, usermem); | 1732 | return scsi_cmd_ioctl(disk->queue, disk, filp ? filp->f_mode : 0, cmd, usermem); |
| 1733 | } | 1733 | } |
| 1734 | 1734 | ||
| 1735 | /* | 1735 | /* |
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 6ec5fc052786..7643cd16fd67 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
| @@ -149,8 +149,8 @@ static void do_virtblk_request(struct request_queue *q) | |||
| 149 | static int virtblk_ioctl(struct inode *inode, struct file *filp, | 149 | static int virtblk_ioctl(struct inode *inode, struct file *filp, |
| 150 | unsigned cmd, unsigned long data) | 150 | unsigned cmd, unsigned long data) |
| 151 | { | 151 | { |
| 152 | return scsi_cmd_ioctl(filp, inode->i_bdev->bd_disk->queue, | 152 | return scsi_cmd_ioctl(inode->i_bdev->bd_disk->queue, |
| 153 | inode->i_bdev->bd_disk, cmd, | 153 | inode->i_bdev->bd_disk, filp->f_mode, cmd, |
| 154 | (void __user *)data); | 154 | (void __user *)data); |
| 155 | } | 155 | } |
| 156 | 156 | ||
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index 4feefa622aed..e286eb5d1f6a 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c | |||
| @@ -2672,7 +2672,7 @@ int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi, | |||
| 2672 | /* | 2672 | /* |
| 2673 | * Try the generic SCSI command ioctl's first. | 2673 | * Try the generic SCSI command ioctl's first. |
| 2674 | */ | 2674 | */ |
| 2675 | ret = scsi_cmd_ioctl(file, disk->queue, disk, cmd, argp); | 2675 | ret = scsi_cmd_ioctl(disk->queue, disk, file ? file->f_mode : 0, cmd, argp); |
| 2676 | if (ret != -ENOTTY) | 2676 | if (ret != -ENOTTY) |
| 2677 | return ret; | 2677 | return ret; |
| 2678 | 2678 | ||
diff --git a/drivers/ide/ide-floppy_ioctl.c b/drivers/ide/ide-floppy_ioctl.c index 0d5f5054ab64..3c9da4ac9341 100644 --- a/drivers/ide/ide-floppy_ioctl.c +++ b/drivers/ide/ide-floppy_ioctl.c | |||
| @@ -280,8 +280,8 @@ int ide_floppy_ioctl(ide_drive_t *drive, struct inode *inode, | |||
| 280 | * and CDROM_SEND_PACKET (legacy) ioctls | 280 | * and CDROM_SEND_PACKET (legacy) ioctls |
| 281 | */ | 281 | */ |
| 282 | if (cmd != CDROM_SEND_PACKET && cmd != SCSI_IOCTL_SEND_COMMAND) | 282 | if (cmd != CDROM_SEND_PACKET && cmd != SCSI_IOCTL_SEND_COMMAND) |
| 283 | err = scsi_cmd_ioctl(file, bdev->bd_disk->queue, | 283 | err = scsi_cmd_ioctl(bdev->bd_disk->queue, bdev->bd_disk, |
| 284 | bdev->bd_disk, cmd, argp); | 284 | file ? file->f_mode : 0, cmd, argp); |
| 285 | 285 | ||
| 286 | if (err == -ENOTTY) | 286 | if (err == -ENOTTY) |
| 287 | err = generic_ide_ioctl(drive, file, bdev, cmd, arg); | 287 | err = generic_ide_ioctl(drive, file, bdev, cmd, arg); |
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 202c1ed9abd7..5d74413f591a 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
| @@ -775,7 +775,8 @@ static int sd_ioctl(struct inode * inode, struct file * filp, | |||
| 775 | case SCSI_IOCTL_GET_BUS_NUMBER: | 775 | case SCSI_IOCTL_GET_BUS_NUMBER: |
| 776 | return scsi_ioctl(sdp, cmd, p); | 776 | return scsi_ioctl(sdp, cmd, p); |
| 777 | default: | 777 | default: |
| 778 | error = scsi_cmd_ioctl(filp, disk->queue, disk, cmd, p); | 778 | error = scsi_cmd_ioctl(disk->queue, disk, |
| 779 | filp ? filp->f_mode : 0, cmd, p); | ||
| 779 | if (error != -ENOTTY) | 780 | if (error != -ENOTTY) |
| 780 | return error; | 781 | return error; |
| 781 | } | 782 | } |
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index 5c28d08f18f4..8dffac9f3419 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c | |||
| @@ -3567,8 +3567,8 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg) | |||
| 3567 | !capable(CAP_SYS_RAWIO)) | 3567 | !capable(CAP_SYS_RAWIO)) |
| 3568 | i = -EPERM; | 3568 | i = -EPERM; |
| 3569 | else | 3569 | else |
| 3570 | i = scsi_cmd_ioctl(file, STp->disk->queue, | 3570 | i = scsi_cmd_ioctl(STp->disk->queue, STp->disk, |
| 3571 | STp->disk, cmd_in, p); | 3571 | file->f_mode, cmd_in, p); |
| 3572 | if (i != -ENOTTY) | 3572 | if (i != -ENOTTY) |
| 3573 | return i; | 3573 | return i; |
| 3574 | break; | 3574 | break; |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 8945c30e9936..48f41b991adb 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -717,8 +717,8 @@ extern void blk_plug_device(struct request_queue *); | |||
| 717 | extern void blk_plug_device_unlocked(struct request_queue *); | 717 | extern void blk_plug_device_unlocked(struct request_queue *); |
| 718 | extern int blk_remove_plug(struct request_queue *); | 718 | extern int blk_remove_plug(struct request_queue *); |
| 719 | extern void blk_recount_segments(struct request_queue *, struct bio *); | 719 | extern void blk_recount_segments(struct request_queue *, struct bio *); |
| 720 | extern int scsi_cmd_ioctl(struct file *, struct request_queue *, | 720 | extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t, |
| 721 | struct gendisk *, unsigned int, void __user *); | 721 | unsigned int, void __user *); |
| 722 | extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, | 722 | extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, |
| 723 | struct scsi_ioctl_command __user *); | 723 | struct scsi_ioctl_command __user *); |
| 724 | 724 | ||
