Hi all, this patch series converts all common code compat syscalls to use the new COMPAT_SYSCALL_DEFINE macros introduced by Al Viro. My main motivation is to get rid of the 1400+ line s390 specific assembler file which contains code for each and every compat system call to perform proper sign, zero and pointer conversion. Eventually the conversion is pretty trivial, except that for a couple of compat syscalls argument types needed to be changed from e.g. 'long' to 'compat_long_t' so that the COMPAT_SYSCALL_DEFINE macro can perform proper sign extension from the 32 bit compat system call argument like it was orginally passed in from user space. The patch series keeps the "noop" conversions (5-10) and those with type changes (11-15) separate. Patches 1-4 are just additional cleanup patches. Especially I'd like to know from somebody familiar with the x32 ABI if any of the type changes break x32? I intentionally did not touch the preadv64 and pwritev64 compat system calls since they have been explicitly added to allow x32 pass 64 bit arguments. However it's not obvious to me if any of my other compat system call changes break x32 or not. FWIW, this patch series omits the whole s390 patches, since I assume they are not very interesting to non-s390 people ;) The complete series (including the s390 only patches) is available at git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git compat If nobody objects I'd like to have the branch integrated into linux-next to get some additional testing. So, please let me know if I screwed up something! :) Thanks, Heiko Heiko Carstens (16): compat: let architectures define __ARCH_WANT_COMPAT_SYS_GETDENTS64 compat: add COMPAT_SYSCALL_DEFINE0 macro ipc/compat_sys_msgrcv: change msgtyp type from long to compat_long_t fs/compat: optional preadv64/pwrite64 compat system calls kernel/compat: convert to COMPAT_SYSCALL_DEFINE net/compat: convert to COMPAT_SYSCALL_DEFINE mm/compat: convert to COMPAT_SYSCALL_DEFINE security/compat: convert to COMPAT_SYSCALL_DEFINE fs/compat: convert to COMPAT_SYSCALL_DEFINE ipc/compat: convert to COMPAT_SYSCALL_DEFINE fs/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types ipc/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types net/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types kexec/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types mm/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types s390/compat: build error for large compat syscall args (diffstat below includes the s390 only patches) arch/arm64/include/asm/unistd.h | 1 + arch/mips/include/asm/unistd.h | 1 - arch/s390/include/asm/compat.h | 6 +- arch/s390/kernel/compat_linux.c | 116 +-- arch/s390/kernel/compat_linux.h | 81 +-- arch/s390/kernel/compat_signal.c | 4 +- arch/s390/kernel/compat_wrapper.S | 1425 ------------------------------------- arch/s390/kernel/compat_wrapper.c | 209 ++++++ arch/s390/kernel/entry.h | 6 +- arch/s390/kernel/syscalls.S | 504 ++++++------- arch/x86/include/asm/unistd.h | 3 + fs/compat.c | 121 ++-- fs/compat_ioctl.c | 5 +- fs/exec.c | 6 +- fs/read_write.c | 36 +- include/linux/compat.h | 62 +- include/linux/kexec.h | 6 - include/linux/syscalls.h | 2 + include/uapi/asm-generic/unistd.h | 1 + ipc/compat.c | 13 +- ipc/compat_mq.c | 32 +- kernel/compat.c | 100 +-- kernel/kexec.c | 8 +- kernel/ptrace.c | 4 +- mm/mempolicy.c | 18 +- mm/process_vm_access.c | 26 +- net/compat.c | 32 +- security/keys/compat.c | 4 +- 28 files changed, 828 insertions(+), 2004 deletions(-) -- 1.8.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html