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

Commit f7fea185 authored by Mathieu Segaud's avatar Mathieu Segaud Committed by James Bottomley
Browse files

[SCSI] ch: Convert to use unlocked_ioctl



As of now, compat_ioctl already runs without the BKL, whereas ioctl runs
with the BKL. This patch first converts changer_fops to use a .unlocked_ioctl
member. It applies the same locking rationale than ch_ioctl_compat() uses
to ch_ioctl().

Signed-off-by: default avatarMathieu Segaud <mathieu.segaud@regala.cx>
Reviewed-by: default avatarMatthew Wilcox <willy@linux.intel.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent eaa3e22e
Loading
Loading
Loading
Loading
+8 −10
Original line number Diff line number Diff line
@@ -92,8 +92,7 @@ static int ch_probe(struct device *);
static int  ch_remove(struct device *);
static int  ch_open(struct inode * inode, struct file * filp);
static int  ch_release(struct inode * inode, struct file * filp);
static int  ch_ioctl(struct inode * inode, struct file * filp,
		     unsigned int cmd, unsigned long arg);
static long ch_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
#ifdef CONFIG_COMPAT
static long ch_ioctl_compat(struct file * filp,
			    unsigned int cmd, unsigned long arg);
@@ -133,7 +132,7 @@ static const struct file_operations changer_fops =
	.owner		= THIS_MODULE,
	.open		= ch_open,
	.release	= ch_release,
	.ioctl        = ch_ioctl,
	.unlocked_ioctl	= ch_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl	= ch_ioctl_compat,
#endif
@@ -626,7 +625,7 @@ ch_checkrange(scsi_changer *ch, unsigned int type, unsigned int unit)
	return 0;
}

static int ch_ioctl(struct inode * inode, struct file * file,
static long ch_ioctl(struct file *file,
		    unsigned int cmd, unsigned long arg)
{
	scsi_changer *ch = file->private_data;
@@ -887,8 +886,7 @@ static long ch_ioctl_compat(struct file * file,
	case CHIOINITELEM:
	case CHIOSVOLTAG:
		/* compatible */
		return ch_ioctl(NULL /* inode, unused */,
				file, cmd, arg);
		return ch_ioctl(file, cmd, arg);
	case CHIOGSTATUS32:
	{
		struct changer_element_status32 ces32;