Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e436fdae authored by Al Viro's avatar Al Viro Committed by Al Viro
Browse files

[PATCH] get rid of blkdev_driver_ioctl()



convert remaining callers to __blkdev_driver_ioctl()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 572c4892
Loading
Loading
Loading
Loading
+10 −19
Original line number Original line Diff line number Diff line
@@ -265,21 +265,6 @@ static int blkdev_locked_ioctl(struct file *file, struct block_device *bdev,
	return -ENOIOCTLCMD;
	return -ENOIOCTLCMD;
}
}


int blkdev_driver_ioctl(struct inode *inode, struct file *file,
			struct gendisk *disk, unsigned cmd, unsigned long arg)
{
	int ret;
	fmode_t mode = 0;
	if (file) {
		mode = file->f_mode;
		if (file->f_flags & O_NDELAY)
			mode |= FMODE_NDELAY_NOW;
	}

	return __blkdev_driver_ioctl(inode->i_bdev, mode, cmd, arg);
}
EXPORT_SYMBOL_GPL(blkdev_driver_ioctl);

int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode,
int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode,
			unsigned cmd, unsigned long arg)
			unsigned cmd, unsigned long arg)
{
{
@@ -315,13 +300,19 @@ int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
	struct block_device *bdev = inode->i_bdev;
	struct block_device *bdev = inode->i_bdev;
	struct gendisk *disk = bdev->bd_disk;
	struct gendisk *disk = bdev->bd_disk;
	int ret, n;
	int ret, n;
	fmode_t mode = 0;
	if (file) {
		mode = file->f_mode;
		if (file->f_flags & O_NDELAY)
			mode |= FMODE_NDELAY_NOW;
	}


	switch(cmd) {
	switch(cmd) {
	case BLKFLSBUF:
	case BLKFLSBUF:
		if (!capable(CAP_SYS_ADMIN))
		if (!capable(CAP_SYS_ADMIN))
			return -EACCES;
			return -EACCES;


		ret = blkdev_driver_ioctl(inode, file, disk, cmd, arg);
		ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg);
		/* -EINVAL to handle old uncorrected drivers */
		/* -EINVAL to handle old uncorrected drivers */
		if (ret != -EINVAL && ret != -ENOTTY)
		if (ret != -EINVAL && ret != -ENOTTY)
			return ret;
			return ret;
@@ -333,7 +324,7 @@ int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
		return 0;
		return 0;


	case BLKROSET:
	case BLKROSET:
		ret = blkdev_driver_ioctl(inode, file, disk, cmd, arg);
		ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg);
		/* -EINVAL to handle old uncorrected drivers */
		/* -EINVAL to handle old uncorrected drivers */
		if (ret != -EINVAL && ret != -ENOTTY)
		if (ret != -EINVAL && ret != -ENOTTY)
			return ret;
			return ret;
@@ -349,7 +340,7 @@ int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
	case BLKDISCARD: {
	case BLKDISCARD: {
		uint64_t range[2];
		uint64_t range[2];


		if (!(file->f_mode & FMODE_WRITE))
		if (!(mode & FMODE_WRITE))
			return -EBADF;
			return -EBADF;


		if (copy_from_user(range, (void __user *)arg, sizeof(range)))
		if (copy_from_user(range, (void __user *)arg, sizeof(range)))
@@ -387,6 +378,6 @@ int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
	if (ret != -ENOIOCTLCMD)
	if (ret != -ENOIOCTLCMD)
		return ret;
		return ret;


	return blkdev_driver_ioctl(inode, file, disk, cmd, arg);
	ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg);
}
}
EXPORT_SYMBOL_GPL(blkdev_ioctl);
EXPORT_SYMBOL_GPL(blkdev_ioctl);
+0 −3
Original line number Original line Diff line number Diff line
@@ -1718,9 +1718,6 @@ extern const struct file_operations def_fifo_fops;
#ifdef CONFIG_BLOCK
#ifdef CONFIG_BLOCK
extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long);
extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long);
extern int blkdev_driver_ioctl(struct inode *inode, struct file *file,
			       struct gendisk *disk, unsigned cmd,
			       unsigned long arg);
extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long);
extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long);
extern int blkdev_get(struct block_device *, fmode_t);
extern int blkdev_get(struct block_device *, fmode_t);
extern int blkdev_put(struct block_device *, fmode_t);
extern int blkdev_put(struct block_device *, fmode_t);