On Wed, Jan 16, 2019 at 02:15:18PM +0100, Arnd Bergmann wrote: > Hi Heiko and Martin, > > As promised, I gave this a go and changed the SYSCALL_DEFINEx() > infrastructure to always include the wrappers for doing the > 31-bit argument conversion on s390 compat mode. > > This does three main things: > > - The UID16 rework saved a lot of duplicated code, and would > probably make sense by itself, but is also required as > we can no longer call sys_*() functions directly after the > last step. > > - Removing the compat_wrapper.c file is of course the main > goal here, in order to remove the need to maintain the > compat_wrapper.c file when new system calls get added. > Unfortunately, this requires adding some complexity in > syscall_wrapper.h, and trades a small reduction in source > code lines for a small increase in binary size for > unused wrappers. > > - As an added benefit, the use of syscall_wrapper.h now makes > it easy to change the syscall wrappers so they no longer > see all user space register contents, similar to changes > done in commits fa697140f9a2 ("syscalls/x86: Use 'struct pt_regs' > based syscall calling convention for 64-bit syscalls") and > 4378a7d4be30 ("arm64: implement syscall wrappers"). > I leave the actual implementation of this for you, if you > want to do it later. > > I did not test the changes at runtime, but I looked at the > generated object code, which seems fine here and includes > the same conversions as before. This work is highly appreciated! I'll look into this tomorrow. Thanks!