Re: [PATCH 0/5] s390: rework compat wrapper generation
From: Heiko Carstens
Date: Thu Jan 17 2019 - 08:36:35 EST
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.
All looks good and seems to work fine. This is a very nice
simplification of our compat code, even if it adds some dead code to
the kernel image.
I did some tests and it all looks good. Also the generated code looks
fine. So, if nothing breaks, this will go upstream with next merge
window via the s390 tree.
Thanks again for your work!