Em Wed, 12 Sep 2018 17:08:52 +0200 Arnd Bergmann <a...@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 <a...@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+sams...@kernel.org> Thanks, Mauro