]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - block/compat_ioctl.c
[SCSI] 3w-9xxx: remove unnecessary local_irq_save/restore for scsi sg copy API
[linux-2.6-omap-h63xx.git] / block / compat_ioctl.c
index f84093b97f704f3d7720708b6ca035741ca6a67f..1e559fba7bdfc58859605b0d9fdc879346f86b07 100644 (file)
@@ -545,6 +545,7 @@ static int compat_blk_trace_setup(struct block_device *bdev, char __user *arg)
        struct blk_user_trace_setup buts;
        struct compat_blk_user_trace_setup cbuts;
        struct request_queue *q;
+       char b[BDEVNAME_SIZE];
        int ret;
 
        q = bdev_get_queue(bdev);
@@ -554,6 +555,8 @@ static int compat_blk_trace_setup(struct block_device *bdev, char __user *arg)
        if (copy_from_user(&cbuts, arg, sizeof(cbuts)))
                return -EFAULT;
 
+       bdevname(bdev, b);
+
        buts = (struct blk_user_trace_setup) {
                .act_mask = cbuts.act_mask,
                .buf_size = cbuts.buf_size,
@@ -565,7 +568,7 @@ static int compat_blk_trace_setup(struct block_device *bdev, char __user *arg)
        memcpy(&buts.name, &cbuts.name, 32);
 
        mutex_lock(&bdev->bd_mutex);
-       ret = do_blk_trace_setup(q, bdev, &buts);
+       ret = do_blk_trace_setup(q, b, bdev->bd_dev, &buts);
        mutex_unlock(&bdev->bd_mutex);
        if (ret)
                return ret;
@@ -581,7 +584,7 @@ static int compat_blkdev_driver_ioctl(struct inode *inode, struct file *file,
 {
        int ret;
 
-       switch (arg) {
+       switch (cmd) {
        case HDIO_GET_UNMASKINTR:
        case HDIO_GET_MULTCOUNT:
        case HDIO_GET_KEEPSETTINGS:
@@ -621,7 +624,6 @@ static int compat_blkdev_driver_ioctl(struct inode *inode, struct file *file,
        case HDIO_GET_IDENTITY:
        case HDIO_DRIVE_TASK:
        case HDIO_DRIVE_CMD:
-       case HDIO_SCAN_HWIF:
        /* 0x330 is reserved -- it used to be HDIO_GETGEO_BIG */
        case 0x330:
        /* 0x02 -- Floppy ioctls */
@@ -786,6 +788,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
                return compat_hdio_getgeo(disk, bdev, compat_ptr(arg));
        case BLKFLSBUF:
        case BLKROSET:
+       case BLKDISCARD:
        /*
         * the ones below are implemented in blkdev_locked_ioctl,
         * but we call blkdev_ioctl, which gets the lock for us