linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/RFC 00/16] compat: convert to COMPAT_SYSCALL_DEFINE
@ 2014-03-06 15:51 Heiko Carstens
  2014-03-06 15:51 ` [PATCH/RFC 01/16] compat: let architectures define __ARCH_WANT_COMPAT_SYS_GETDENTS64 Heiko Carstens
                   ` (17 more replies)
  0 siblings, 18 replies; 28+ messages in thread
From: Heiko Carstens @ 2014-03-06 15:51 UTC (permalink / raw)
  To: Al Viro, H. Peter Anvin, Ingo Molnar, Thomas Gleixner
  Cc: linux-arch, Martin Schwidefsky, Heiko Carstens

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2014-03-20 15:29 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-06 15:51 [PATCH/RFC 00/16] compat: convert to COMPAT_SYSCALL_DEFINE Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 01/16] compat: let architectures define __ARCH_WANT_COMPAT_SYS_GETDENTS64 Heiko Carstens
2014-03-20 10:03   ` Geert Uytterhoeven
2014-03-20 10:03     ` Geert Uytterhoeven
2014-03-20 11:33     ` Heiko Carstens
2014-03-20 14:51       ` Heiko Carstens
2014-03-20 15:20         ` Geert Uytterhoeven
2014-03-20 15:20           ` Geert Uytterhoeven
2014-03-20 15:29         ` Chris Metcalf
2014-03-06 15:51 ` [PATCH/RFC 02/16] compat: add COMPAT_SYSCALL_DEFINE0 macro Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 03/16] ipc/compat_sys_msgrcv: change msgtyp type from long to compat_long_t Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 04/16] fs/compat: optional preadv64/pwrite64 compat system calls Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 05/16] kernel/compat: convert to COMPAT_SYSCALL_DEFINE Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 06/16] net/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 07/16] mm/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 08/16] security/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 09/16] fs/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 10/16] ipc/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 11/16] fs/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 12/16] ipc/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 13/16] net/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 14/16] kexec/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 15/16] mm/compat: " Heiko Carstens
2014-03-06 15:51 ` [PATCH/RFC 16/16] s390/compat: build error for large compat syscall args Heiko Carstens
2014-03-06 16:14 ` [PATCH/RFC 00/16] compat: convert to COMPAT_SYSCALL_DEFINE Geert Uytterhoeven
2014-03-12 19:45 ` Heiko Carstens
2014-03-12 19:45   ` Heiko Carstens
2014-03-17  6:02   ` Stephen Rothwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).