On Tue, Jan 21, 2025 at 11:41:24PM +0100, Thomas Weißschuh wrote: > Pointer arguments passed to ioctls need to pass through compat_ptr() to > work correctly on s390; as explained in Documentation/driver-api/ioctl.rst. > Plumb the compat_ioctl callback through 'struct posix_clock_operations' > and handle the different ioctls cmds in the new ptp_compat_ioctl(). > > Using compat_ptr_ioctl is not possible. > For the commands PTP_ENABLE_PPS/PTP_ENABLE_PPS2 on s390 > it would corrupt the argument 0x80000000, aka BIT(31) to zero. > > Fixes: 0606f422b453 ("posix clocks: Introduce dynamic clocks") > Fixes: d94ba80ebbea ("ptp: Added a brand new class driver for ptp clocks.") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx> ... > diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c > index 77a36e7bddd54e8f45eab317e687f033f57cc5bc..dec84b81cedfd13bcf8c97be6c3c27d73cd671f6 100644 > --- a/drivers/ptp/ptp_clock.c > +++ b/drivers/ptp/ptp_clock.c > @@ -180,6 +180,7 @@ static struct posix_clock_operations ptp_clock_ops = { > .clock_getres = ptp_clock_getres, > .clock_settime = ptp_clock_settime, > .ioctl = ptp_ioctl, > + .compat_ioctl = ptp_compat_ioctl, > .open = ptp_open, > .release = ptp_release, > .poll = ptp_poll, nit: compat_ioctl should also be added to the Kernel doc for struct posix_clock_operations ...