Just open code it in the few callers.
Unified · Split
| @@ -219,23 +219,6 @@ static int compat_put_ulong(compat_ulong_t __user *argp, compat_ulong_t val) · 218 unmodified lines | |||
| 219 | } | 219 | } |
| 220 | #endif | 220 | #endif |
| 221 | 221 | ||
| 222 | int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode, | ||
| 223 | unsigned cmd, unsigned long arg) | ||
| 224 | { | ||
| 225 | struct gendisk *disk = bdev->bd_disk; | ||
| 226 | |||
| 227 | if (disk->fops->ioctl) | ||
| 228 | return disk->fops->ioctl(bdev, mode, cmd, arg); | ||
| 229 | |||
| 230 | return -ENOTTY; | ||
| 231 | } | ||
| 232 | /* | ||
| 233 | * For the record: _GPL here is only because somebody decided to slap it | ||
| 234 | * on the previous export. Sheer idiocy, since it wasn't copyrightable | ||
| 235 | * at all and could be open-coded without any exports by anybody who cares. | ||
| 236 | */ | ||
| 237 | EXPORT_SYMBOL_GPL(__blkdev_driver_ioctl); | ||
| 238 | |||
| 239 | #ifdef CONFIG_COMPAT | 222 | #ifdef CONFIG_COMPAT |
| 240 | /* | 223 | /* |
| 241 | * This is the equivalent of compat_ptr_ioctl(), to be used by block | 224 | * This is the equivalent of compat_ptr_ioctl(), to be used by block |
| @@ -594,10 +577,12 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, · 352 unmodified lines | |||
| 594 | } | 577 | } |
| 595 | 578 | ||
| 596 | ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp); | 579 | ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp); |
| 597 | if (ret == -ENOIOCTLCMD) | 580 | if (ret != -ENOIOCTLCMD) |
| 598 | return __blkdev_driver_ioctl(bdev, mode, cmd, arg); | 581 | return ret; |
| 599 | 582 | ||
| 600 | return ret; | 583 | if (!bdev->bd_disk->fops->ioctl) |
| 584 | return -ENOTTY; | ||
| 585 | return bdev->bd_disk->fops->ioctl(bdev, mode, cmd, arg); | ||
| 601 | } | 586 | } |
| 602 | EXPORT_SYMBOL_GPL(blkdev_ioctl); /* for /dev/raw */ | 587 | EXPORT_SYMBOL_GPL(blkdev_ioctl); /* for /dev/raw */ |
| 603 | 588 | ||
| @@ -2584,9 +2584,11 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, · 2583 unmodified lines | |||
| 2584 | case CDROM_LAST_WRITTEN: | 2584 | case CDROM_LAST_WRITTEN: |
| 2585 | case CDROM_SEND_PACKET: | 2585 | case CDROM_SEND_PACKET: |
| 2586 | case SCSI_IOCTL_SEND_COMMAND: | 2586 | case SCSI_IOCTL_SEND_COMMAND: |
| 2587 | ret = __blkdev_driver_ioctl(pd->bdev, mode, cmd, arg); | 2587 | if (!bdev->bd_disk->fops->ioctl) |
| 2588 | ret = -ENOTTY; | ||
| 2589 | else | ||
| 2590 | ret = bdev->bd_disk->fops->ioctl(bdev, mode, cmd, arg); | ||
| 2588 | break; | 2591 | break; |
| 2589 | |||
| 2590 | default: | 2592 | default: |
| 2591 | pkt_dbg(2, pd, "Unknown ioctl (%x)\n", cmd); | 2593 | pkt_dbg(2, pd, "Unknown ioctl (%x)\n", cmd); |
| 2592 | ret = -ENOTTY; | 2594 | ret = -ENOTTY; |
| @@ -1230,8 +1230,9 @@ static int cached_dev_ioctl(struct bcache_device *d, fmode_t mode, · 1229 unmodified lines | |||
| 1230 | 1230 | ||
| 1231 | if (dc->io_disable) | 1231 | if (dc->io_disable) |
| 1232 | return -EIO; | 1232 | return -EIO; |
| 1233 | 1233 | if (!dc->bdev->bd_disk->fops->ioctl) | |
| 1234 | return __blkdev_driver_ioctl(dc->bdev, mode, cmd, arg); | 1234 | return -ENOTTY; |
| 1235 | return dc->bdev->bd_disk->fops->ioctl(dc->bdev, mode, cmd, arg); | ||
| 1235 | } | 1236 | } |
| 1236 | 1237 | ||
| 1237 | void bch_cached_dev_request_init(struct cached_dev *dc) | 1238 | void bch_cached_dev_request_init(struct cached_dev *dc) |
| @@ -570,7 +570,10 @@ static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode, · 569 unmodified lines | |||
| 570 | } | 570 | } |
| 571 | } | 571 | } |
| 572 | 572 | ||
| 573 | r = __blkdev_driver_ioctl(bdev, mode, cmd, arg); | 573 | if (!bdev->bd_disk->fops->ioctl) |
| 574 | r = -ENOTTY; | ||
| 575 | else | ||
| 576 | r = bdev->bd_disk->fops->ioctl(bdev, mode, cmd, arg); | ||
| 574 | out: | 577 | out: |
| 575 | dm_unprepare_ioctl(md, srcu_idx); | 578 | dm_unprepare_ioctl(md, srcu_idx); |
| 576 | return r; | 579 | return r; |
| @@ -1867,8 +1867,6 @@ extern int blkdev_compat_ptr_ioctl(struct block_device *, fmode_t, · 1866 unmodified lines | |||
| 1867 | #define blkdev_compat_ptr_ioctl NULL | 1867 | #define blkdev_compat_ptr_ioctl NULL |
| 1868 | #endif | 1868 | #endif |
| 1869 | 1869 | ||
| 1870 | extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int, | ||
| 1871 | unsigned long); | ||
| 1872 | extern int bdev_read_page(struct block_device *, sector_t, struct page *); | 1870 | extern int bdev_read_page(struct block_device *, sector_t, struct page *); |
| 1873 | extern int bdev_write_page(struct block_device *, sector_t, struct page *, | 1871 | extern int bdev_write_page(struct block_device *, sector_t, struct page *, |
| 1874 | struct writeback_control *); | 1872 | struct writeback_control *); |