On Wed, Jan 22, 2025 at 08:30:51AM +0100, Arnd Bergmann wrote:
On Tue, Jan 21, 2025, at 23:41, 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@vger.kernel.org Signed-off-by: Thomas Weißschuh linux@weissschuh.net
This looks correct to me,
I'm not familiar with s390, but I can remember that the compat ioctl was nixed during review.
https://lore.kernel.org/lkml/201012161716.42520.arnd@arndb.de/
https://lore.kernel.org/lkml/alpine.LFD.2.00.1012161939340.12146@localhost6....
Can you explain what changed or what was missed?
Thanks, Richard