Skip to content

Commit

Permalink
[media] lirc: wire up .compat_ioctl to main ioctl handler
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jarod Wilson authored and Mauro Carvalho Chehab committed Oct 21, 2010
1 parent a126681 commit 8be292c
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/media/IR/ir-lirc-codec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
8 changes: 8 additions & 0 deletions drivers/media/IR/lirc_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};
Expand Down Expand Up @@ -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);

Expand Down
3 changes: 3 additions & 0 deletions drivers/staging/lirc/lirc_it87.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};
Expand Down
3 changes: 3 additions & 0 deletions drivers/staging/lirc/lirc_parallel.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
Expand Down
3 changes: 3 additions & 0 deletions drivers/staging/lirc/lirc_serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 3 additions & 0 deletions drivers/staging/lirc/lirc_sir.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};
Expand Down
3 changes: 3 additions & 0 deletions drivers/staging/lirc/lirc_zilog.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
Expand Down

0 comments on commit 8be292c

Please sign in to comment.