[media] lirc: wire up .compat_ioctl to main ioctl handler
As pointed out (and tested) by Joris van Rantwijk, we do actually need to wire up .compat_ioctl for 32-bit lirc userspace to work with 64-bit lirc kernelspace. Do it. And add a check to make sure we get a valid irctl in the ioctl handler. Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
a126681810
commit
8be292cc03
7 changed files with 26 additions and 0 deletions
|
@ -231,6 +231,9 @@ static struct file_operations lirc_fops = {
|
|||
.owner = THIS_MODULE,
|
||||
.write = ir_lirc_transmit_ir,
|
||||
.unlocked_ioctl = ir_lirc_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = ir_lirc_ioctl,
|
||||
#endif
|
||||
.read = lirc_dev_fop_read,
|
||||
.poll = lirc_dev_fop_poll,
|
||||
.open = lirc_dev_fop_open,
|
||||
|
|
|
@ -161,6 +161,9 @@ static struct file_operations fops = {
|
|||
.write = lirc_dev_fop_write,
|
||||
.poll = lirc_dev_fop_poll,
|
||||
.unlocked_ioctl = lirc_dev_fop_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = lirc_dev_fop_ioctl,
|
||||
#endif
|
||||
.open = lirc_dev_fop_open,
|
||||
.release = lirc_dev_fop_close,
|
||||
};
|
||||
|
@ -528,6 +531,11 @@ long lirc_dev_fop_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
|||
int result = 0;
|
||||
struct irctl *ir = file->private_data;
|
||||
|
||||
if (!ir) {
|
||||
printk(KERN_ERR "lirc_dev: %s: no irctl found!\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
dev_dbg(ir->d.dev, LOGHEAD "ioctl called (0x%x)\n",
|
||||
ir->d.name, ir->d.minor, cmd);
|
||||
|
||||
|
|
|
@ -339,6 +339,9 @@ static const struct file_operations lirc_fops = {
|
|||
.write = lirc_write,
|
||||
.poll = lirc_poll,
|
||||
.unlocked_ioctl = lirc_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = lirc_ioctl,
|
||||
#endif
|
||||
.open = lirc_open,
|
||||
.release = lirc_close,
|
||||
};
|
||||
|
|
|
@ -546,6 +546,9 @@ static const struct file_operations lirc_fops = {
|
|||
.write = lirc_write,
|
||||
.poll = lirc_poll,
|
||||
.unlocked_ioctl = lirc_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = lirc_ioctl,
|
||||
#endif
|
||||
.open = lirc_open,
|
||||
.release = lirc_close
|
||||
};
|
||||
|
|
|
@ -1053,6 +1053,9 @@ static const struct file_operations lirc_fops = {
|
|||
.owner = THIS_MODULE,
|
||||
.write = lirc_write,
|
||||
.unlocked_ioctl = lirc_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = lirc_ioctl,
|
||||
#endif
|
||||
.read = lirc_dev_fop_read,
|
||||
.poll = lirc_dev_fop_poll,
|
||||
.open = lirc_dev_fop_open,
|
||||
|
|
|
@ -456,6 +456,9 @@ static const struct file_operations lirc_fops = {
|
|||
.write = lirc_write,
|
||||
.poll = lirc_poll,
|
||||
.unlocked_ioctl = lirc_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = lirc_ioctl,
|
||||
#endif
|
||||
.open = lirc_dev_fop_open,
|
||||
.release = lirc_dev_fop_close,
|
||||
};
|
||||
|
|
|
@ -1139,6 +1139,9 @@ static const struct file_operations lirc_fops = {
|
|||
.write = write,
|
||||
.poll = poll,
|
||||
.unlocked_ioctl = ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = ioctl,
|
||||
#endif
|
||||
.open = open,
|
||||
.release = close
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue