]> www.infradead.org Git - users/hch/block.git/commitdiff
scsi_ioctl: remove scsi_verify_blk_ioctl
authorChristoph Hellwig <hch@lst.de>
Tue, 29 Jun 2021 06:42:00 +0000 (08:42 +0200)
committerChristoph Hellwig <hch@lst.de>
Fri, 23 Jul 2021 05:06:20 +0000 (07:06 +0200)
Just verify that the device is no a partition or the caller has admin
privŃ–leges at the beginning of the sr ioctl method manually and open
code the trivial check for sd as well.

Signed-off-by: Christoph Hellwig <hch@lst.de>
block/scsi_ioctl.c
drivers/scsi/sd.c
drivers/scsi/sr.c
include/linux/blkdev.h

index f8138438c56fea57be3af6b4dd57646bfea42b1e..ca7b84452d9d3b6721f1f35854be49d8d19e52fb 100644 (file)
@@ -842,18 +842,6 @@ int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mod
 }
 EXPORT_SYMBOL(scsi_cmd_ioctl);
 
-int scsi_verify_blk_ioctl(struct block_device *bd, unsigned int cmd)
-{
-       if (bd && !bdev_is_partition(bd))
-               return 0;
-
-       if (capable(CAP_SYS_RAWIO))
-               return 0;
-
-       return -ENOIOCTLCMD;
-}
-EXPORT_SYMBOL(scsi_verify_blk_ioctl);
-
 /**
  * scsi_req_init - initialize certain fields of a scsi_request structure
  * @req: Pointer to a scsi_request structure.
index 72099d3892f0de272edd912ae55b9fb09b7e2ebf..78025acad6e3e23cf6a56e66d39414c9c700bfc5 100644 (file)
@@ -1554,9 +1554,8 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
        SCSI_LOG_IOCTL(1, sd_printk(KERN_INFO, sdkp, "sd_ioctl: disk=%s, "
                                    "cmd=0x%x\n", disk->disk_name, cmd));
 
-       error = scsi_verify_blk_ioctl(bdev, cmd);
-       if (error < 0)
-               return error;
+       if (bdev_is_partition(bdev) && !capable(CAP_SYS_RAWIO))
+               return -ENOIOCTLCMD;
 
        /*
         * If we are in the middle of error recovery, don't let anyone
@@ -1582,9 +1581,6 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
        case SCSI_IOCTL_GET_BUS_NUMBER:
                break;
        default:
-               error = scsi_verify_blk_ioctl(bdev, cmd);
-               if (error < 0)
-                       return error;
                error = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, p);
                if (error != -ENOTTY)
                        return error;
index b903e54c57fd5b82877390e4bd896faf7e914612..e6eadba4d6388ef211ed387e2824e7153bbaa5d0 100644 (file)
@@ -562,6 +562,9 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
        void __user *argp = (void __user *)arg;
        int ret;
 
+       if (bdev_is_partition(bdev) && !capable(CAP_SYS_RAWIO))
+               return -ENOIOCTLCMD;
+
        mutex_lock(&cd->lock);
 
        ret = scsi_ioctl_block_when_processing_errors(sdev, cmd,
@@ -580,9 +583,6 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
        case SCSI_IOCTL_GET_BUS_NUMBER:
                break;
        default:
-               ret = scsi_verify_blk_ioctl(bdev, cmd);
-               if (ret < 0)
-                       goto put;
                ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, argp);
                if (ret != -ENOTTY)
                        goto put;
index 19aa3d5429c08b79245e8ae2dca128d1a3b070dd..e2b972a85012676ee2b6d5bcdc37b5fa73c0f6e2 100644 (file)
@@ -888,7 +888,6 @@ extern blk_status_t blk_insert_cloned_request(struct request_queue *q,
                                     struct request *rq);
 int blk_rq_append_bio(struct request *rq, struct bio *bio);
 extern void blk_queue_split(struct bio **);
-extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int);
 extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
                          unsigned int, void __user *);
 extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t,