Em Wed, 12 Sep 2018 17:08:52 +0200 Arnd Bergmann arnd@arndb.de escreveu:
The .ioctl and .compat_ioctl file operations have the same prototype so they can both point to the same function, which works great almost all the time when all the commands are compatible.
One exception is the s390 architecture, where a compat pointer is only 31 bit wide, and converting it into a 64-bit pointer requires calling compat_ptr(). Most drivers here will ever run in s390, but since we now have a generic helper for it, it's easy enough to use it consistently.
I double-checked all these drivers to ensure that all ioctl arguments are used as pointers or are ignored, but are not interpreted as integer values.
Signed-off-by: Arnd Bergmann arnd@arndb.de
drivers/media/rc/lirc_dev.c | 4 +---
diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index f862f1b7f996..077209f414ed 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -730,9 +730,7 @@ static const 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
- .compat_ioctl = generic_compat_ioctl_ptrarg, .read = ir_lirc_read, .poll = ir_lirc_poll, .open = ir_lirc_open,
Adding an infrared remote controller to a s390 mainframe sounds fun :-)
I suspect that one could implement it on a s390 platform using gpio-ir-recv and/or gpio-ir-tx drivers. Perhaps one possible practical usage would be to let the mainframe to send remote controller codes to adjust the air conditioning system ;-)
From lirc driver's PoV, there's nothing that really prevents one to do that and use lirc API, and the driver is generic enough to work on any hardware platform.
I didn't check the implementation of generic_compat_ioctl_ptrarg(), but assuming it is ok,
Acked-by: Mauro Carvalho Chehab mchehab+samsung@kernel.org
Thanks, Mauro