On Tue, Jul 30, 2019 at 12:59 PM Arnd Bergmann arnd@arndb.de wrote:
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 never 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.
Acked-by: Jason Gunthorpe jgg@mellanox.com Acked-by: Daniel Vetter daniel.vetter@ffwll.ch Acked-by: Mauro Carvalho Chehab mchehab+samsung@kernel.org Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Acked-by: David Sterba dsterba@suse.com Acked-by: Darren Hart (VMware) dvhart@infradead.org Acked-by: Jonathan Cameron Jonathan.Cameron@huawei.com Acked-by: Bjorn Andersson bjorn.andersson@linaro.org Signed-off-by: Arnd Bergmann arnd@arndb.de
drivers/nvdimm/bus.c | 4 ++--
[..]
diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 798c5c4aea9c..6ca142d833ab 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -1229,7 +1229,7 @@ static const struct file_operations nvdimm_bus_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = bus_ioctl,
.compat_ioctl = bus_ioctl,
.compat_ioctl = compat_ptr_ioctl, .llseek = noop_llseek,
};
@@ -1237,7 +1237,7 @@ static const struct file_operations nvdimm_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = dimm_ioctl,
.compat_ioctl = dimm_ioctl,
.compat_ioctl = compat_ptr_ioctl, .llseek = noop_llseek,
};
Acked-by: Dan Williams dan.j.williams@intel.com