]> git.hungrycats.org Git - linux/commitdiff
Pass done file pointer to block device ioctl's
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 12 Aug 2004 10:03:59 +0000 (03:03 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 12 Aug 2004 10:03:59 +0000 (03:03 -0700)
They'll need it for permission checking.

21 files changed:
drivers/block/paride/pcd.c
drivers/block/scsi_ioctl.c
drivers/cdrom/cdrom.c
drivers/cdrom/cdu31a.c
drivers/cdrom/cm206.c
drivers/cdrom/mcd.c
drivers/cdrom/mcdx.c
drivers/cdrom/sbpcd.c
drivers/cdrom/viocd.c
drivers/ide/ide-cd.c
drivers/ide/ide-disk.c
drivers/ide/ide-floppy.c
drivers/ide/ide-tape.c
drivers/ide/ide.c
drivers/scsi/ide-scsi.c
drivers/scsi/sd.c
drivers/scsi/sr.c
drivers/scsi/st.c
include/linux/blkdev.h
include/linux/cdrom.h
include/linux/ide.h

index 2f1901b606c22c37bf37c44e4616aa814dfbc238..876a236908839946e9f9c9733c5f361065f53e79 100644 (file)
@@ -259,7 +259,7 @@ static int pcd_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
        struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(&cd->info, inode, cmd, arg);
+       return cdrom_ioctl(file, &cd->info, inode, cmd, arg);
 }
 
 static int pcd_block_media_changed(struct gendisk *disk)
index 203422b763642bedcbaff62257521320ff0c05c6..dafb2fb034b14ca1db80f13f9e96e1001582375e 100644 (file)
@@ -323,7 +323,7 @@ error:
        return err;
 }
 
-int scsi_cmd_ioctl(struct gendisk *bd_disk, unsigned int cmd, void __user *arg)
+int scsi_cmd_ioctl(struct file *file, struct gendisk *bd_disk, unsigned int cmd, void __user *arg)
 {
        request_queue_t *q;
        struct request *rq;
index 360d4b64a42e535ea83e8a60165b46a51b0bfdc6..2f778c92b88b34aef0e51991c249a827030e9bcf 100644 (file)
@@ -2072,14 +2072,14 @@ retry:
  * these days. ATAPI / SCSI specific code now mainly resides in
  * mmc_ioct().
  */
-int cdrom_ioctl(struct cdrom_device_info *cdi, struct inode *ip,
-               unsigned int cmd, unsigned long arg)
+int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi,
+               struct inode *ip, unsigned int cmd, unsigned long arg)
 {
        struct cdrom_device_ops *cdo = cdi->ops;
        int ret;
 
        /* Try the generic SCSI command ioctl's first.. */
-       ret = scsi_cmd_ioctl(ip->i_bdev->bd_disk, cmd, (void __user *)arg);
+       ret = scsi_cmd_ioctl(file, ip->i_bdev->bd_disk, cmd, (void __user *)arg);
        if (ret != -ENOTTY)
                return ret;
 
index 3a758a020280c7f1ac42990dd36bb45e05d28db8..cbe336429c2f9a32bc4884149d5a26bfdd45f1e6 100644 (file)
@@ -3179,7 +3179,7 @@ static int scd_block_release(struct inode *inode, struct file *file)
 static int scd_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
-       return cdrom_ioctl(&scd_info, inode, cmd, arg);
+       return cdrom_ioctl(file, &scd_info, inode, cmd, arg);
 }
 
 static int scd_block_media_changed(struct gendisk *disk)
index d6d49df4dea5e3036a6a1c6edc7494e8d7a8e549..ccd2603625dfbedd3d6831dd732c332cc0b88980 100644 (file)
@@ -1363,7 +1363,7 @@ static int cm206_block_release(struct inode *inode, struct file *file)
 static int cm206_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
-       return cdrom_ioctl(&cm206_info, inode, cmd, arg);
+       return cdrom_ioctl(file, &cm206_info, inode, cmd, arg);
 }
 
 static int cm206_block_media_changed(struct gendisk *disk)
index 33b35e30e619a0f61373eafead9336ae2dcd156f..4cb0fb491c65a3a33c1fa7949c8ed9333b59c939 100644 (file)
@@ -227,7 +227,7 @@ static int mcd_block_release(struct inode *inode, struct file *file)
 static int mcd_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
-       return cdrom_ioctl(&mcd_info, inode, cmd, arg);
+       return cdrom_ioctl(file, &mcd_info, inode, cmd, arg);
 }
 
 static int mcd_block_media_changed(struct gendisk *disk)
index 3ada792c81f8adc76140f2b662c578eb8d0679ea..01b4e9a5602e455a1e8522894be3f76905a42595 100644 (file)
@@ -233,7 +233,7 @@ static int mcdx_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
        struct s_drive_stuff *p = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(&p->info, inode, cmd, arg);
+       return cdrom_ioctl(file, &p->info, inode, cmd, arg);
 }
 
 static int mcdx_block_media_changed(struct gendisk *disk)
index a2475c6bb183e361aa42bd11e7f1e4e96bd4f710..88467495983a31db9bf5f330c1f7c444b4cc1742 100644 (file)
@@ -5372,7 +5372,7 @@ static int sbpcd_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
        struct sbpcd_drive *p = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(p->sbpcd_infop, inode, cmd, arg);
+       return cdrom_ioctl(file, p->sbpcd_infop, inode, cmd, arg);
 }
 
 static int sbpcd_block_media_changed(struct gendisk *disk)
index 85f0aca152224f4c7218afeb2e8af1e7e63d210d..3a2acc0fb855ac89da94d7454c752a4b76cea476 100644 (file)
@@ -199,7 +199,7 @@ static int viocd_blk_ioctl(struct inode *inode, struct file *file,
                unsigned cmd, unsigned long arg)
 {
        struct disk_info *di = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(&di->viocd_info, inode, cmd, arg);
+       return cdrom_ioctl(file, &di->viocd_info, inode, cmd, arg);
 }
 
 static int viocd_blk_media_changed(struct gendisk *disk)
index f8414d0a4aae4d37d369aaca62308ef6cbe9eb38..c3d6286eb87c1f99092b9c5d99571f0b8691f65a 100644 (file)
@@ -3395,10 +3395,10 @@ static int idecd_ioctl (struct inode *inode, struct file *file,
 {
        struct block_device *bdev = inode->i_bdev;
        ide_drive_t *drive = bdev->bd_disk->private_data;
-       int err = generic_ide_ioctl(bdev, cmd, arg);
+       int err = generic_ide_ioctl(file, bdev, cmd, arg);
        if (err == -EINVAL) {
                struct cdrom_info *info = drive->driver_data;
-               err = cdrom_ioctl(&info->devinfo, inode, cmd, arg);
+               err = cdrom_ioctl(file, &info->devinfo, inode, cmd, arg);
        }
        return err;
 }
index 8b6be30b12c8fde779c7e7e3d7080493faa98e38..7b3bf05cbf95da0d60876ec2e6596b44d15085aa 100644 (file)
@@ -1668,7 +1668,7 @@ static int idedisk_ioctl(struct inode *inode, struct file *file,
                        unsigned int cmd, unsigned long arg)
 {
        struct block_device *bdev = inode->i_bdev;
-       return generic_ide_ioctl(bdev, cmd, arg);
+       return generic_ide_ioctl(file, bdev, cmd, arg);
 }
 
 static int idedisk_media_changed(struct gendisk *disk)
index 56fec5ca18792bef7f61e6b0c6c634e79edae007..7383f44a2d0ba7b80f16b2aa5e021d690800c3ac 100644 (file)
@@ -1946,7 +1946,7 @@ static int idefloppy_ioctl(struct inode *inode, struct file *file,
        ide_drive_t *drive = bdev->bd_disk->private_data;
        idefloppy_floppy_t *floppy = drive->driver_data;
        void __user *argp = (void __user *)arg;
-       int err = generic_ide_ioctl(bdev, cmd, arg);
+       int err = generic_ide_ioctl(file, bdev, cmd, arg);
        int prevent = (arg) ? 1 : 0;
        idefloppy_pc_t pc;
        if (err != -EINVAL)
index f86ffc4b356b2f9f20f0b3c75f5ee33f186608e2..d19ee543e2023f5224244b47f031df66f5166d1a 100644 (file)
@@ -4807,7 +4807,7 @@ static int idetape_ioctl(struct inode *inode, struct file *file,
 {
        struct block_device *bdev = inode->i_bdev;
        ide_drive_t *drive = bdev->bd_disk->private_data;
-       int err = generic_ide_ioctl(bdev, cmd, arg);
+       int err = generic_ide_ioctl(file, bdev, cmd, arg);
        if (err == -EINVAL)
                err = idetape_blkdev_ioctl(drive, cmd, arg);
        return err;
index 2bdb860e03c3bfd7f183bbb3f6c05fb305cfe3cf..e99d9ec19bbe6e8efea8c97bab813f32aa76219e 100644 (file)
@@ -1453,8 +1453,8 @@ static int generic_ide_resume(struct device *dev)
        return ide_do_drive_cmd(drive, &rq, ide_head_wait);
 }
 
-int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
-                       unsigned long arg)
+int generic_ide_ioctl(struct file *file, struct block_device *bdev,
+                       unsigned int cmd, unsigned long arg)
 {
        ide_drive_t *drive = bdev->bd_disk->private_data;
        ide_settings_t *setting;
@@ -1605,7 +1605,7 @@ int generic_ide_ioctl(struct block_device *bdev, unsigned int cmd,
 
                case CDROMEJECT:
                case CDROMCLOSETRAY:
-                       return scsi_cmd_ioctl(bdev->bd_disk, cmd, p);
+                       return scsi_cmd_ioctl(file, bdev->bd_disk, cmd, p);
 
                case HDIO_GET_BUSSTATE:
                        if (!capable(CAP_SYS_ADMIN))
index 811c66d7285462544bdad670470b493635035bca..4f2a284c2056e539fb590be36538c769d1c7dd05 100644 (file)
@@ -735,7 +735,7 @@ static int idescsi_ide_ioctl(struct inode *inode, struct file *file,
                        unsigned int cmd, unsigned long arg)
 {
        struct block_device *bdev = inode->i_bdev;
-       return generic_ide_ioctl(bdev, cmd, arg);
+       return generic_ide_ioctl(file, bdev, cmd, arg);
 }
 
 static struct block_device_operations idescsi_ops = {
index 75c80671e0699b85af1eb1e2d6d15d5abb5b7c5c..8fd45906059acfaa18d3602ed5a0ffe3add1438e 100644 (file)
@@ -594,7 +594,7 @@ static int sd_ioctl(struct inode * inode, struct file * filp,
                case SCSI_IOCTL_GET_BUS_NUMBER:
                        return scsi_ioctl(sdp, cmd, p);
                default:
-                       error = scsi_cmd_ioctl(disk, cmd, p);
+                       error = scsi_cmd_ioctl(filp, disk, cmd, p);
                        if (error != -ENOTTY)
                                return error;
        }
index 06aa858f9a809934d0e48844ce9e83c8c066ee79..b80aa283c9212955bae627e19e71969683233490 100644 (file)
@@ -504,7 +504,7 @@ static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd,
                 case SCSI_IOCTL_GET_BUS_NUMBER:
                         return scsi_ioctl(sdev, cmd, (void __user *)arg);
        }
-       return cdrom_ioctl(&cd->cdi, inode, cmd, arg);
+       return cdrom_ioctl(file, &cd->cdi, inode, cmd, arg);
 }
 
 static int sr_block_media_changed(struct gendisk *disk)
index 6e87d622662649a9ce5e04091df50b8af9af4024..5fa0153dac1467ad9933157118889163cbf2d12e 100644 (file)
@@ -3408,7 +3408,7 @@ static int st_ioctl(struct inode *inode, struct file *file,
                case SCSI_IOCTL_GET_BUS_NUMBER:
                        break;
                default:
-                       i = scsi_cmd_ioctl(STp->disk, cmd_in, p);
+                       i = scsi_cmd_ioctl(file, STp->disk, cmd_in, p);
                        if (i != -ENOTTY)
                                return i;
                        break;
index 7df0f31bfe7d84d7e0bc2a8ad04bb2eadaff7386..eb4d10be7e6003d34674f812ec3a2e3b7174f8a6 100644 (file)
@@ -517,7 +517,7 @@ extern int blk_remove_plug(request_queue_t *);
 extern void blk_recount_segments(request_queue_t *, struct bio *);
 extern int blk_phys_contig_segment(request_queue_t *q, struct bio *, struct bio *);
 extern int blk_hw_contig_segment(request_queue_t *q, struct bio *, struct bio *);
-extern int scsi_cmd_ioctl(struct gendisk *, unsigned int, void __user *);
+extern int scsi_cmd_ioctl(struct file *, struct gendisk *, unsigned int, void __user *);
 extern void blk_start_queue(request_queue_t *q);
 extern void blk_stop_queue(request_queue_t *q);
 extern void __blk_stop_queue(request_queue_t *q);
index 282e9b793e363fe8405474b121e068b6c7a3e42b..0e46b2d0de0bfe7ae9a51d3c88cf6f6104b7161b 100644 (file)
@@ -984,8 +984,8 @@ struct cdrom_device_ops {
 extern int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip,
                        struct file *fp);
 extern int cdrom_release(struct cdrom_device_info *cdi, struct file *fp);
-extern int cdrom_ioctl(struct cdrom_device_info *cdi, struct inode *ip,
-               unsigned int cmd, unsigned long arg);
+extern int cdrom_ioctl(struct file *file, struct cdrom_device_info *cdi,
+               struct inode *ip, unsigned int cmd, unsigned long arg);
 extern int cdrom_media_changed(struct cdrom_device_info *);
 
 extern int register_cdrom(struct cdrom_device_info *cdi);
index fe54e41439c8d1612a6540b166d3cb3d437282e0..06542968a2c2be1cdd94c009a8ca6a319bee1280 100644 (file)
@@ -1194,7 +1194,7 @@ typedef struct ide_driver_s {
 
 #define DRIVER(drive)          ((drive)->driver)
 
-extern int generic_ide_ioctl(struct block_device *, unsigned, unsigned long);
+extern int generic_ide_ioctl(struct file *, struct block_device *, unsigned, unsigned long);
 
 /*
  * ide_hwifs[] is the master data structure used to keep track