Merge tag 'y2038-syscall-cleanup' of git://git.kernel.org:/pub/scm/linux/kernel/git...
authorThomas Gleixner <tglx@linutronix.de>
Sun, 10 Feb 2019 19:44:19 +0000 (20:44 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 10 Feb 2019 19:44:19 +0000 (20:44 +0100)
Pull preparatory work for y2038 changes from Arnd Bergmann:

System call unification and cleanup

The system call tables have diverged a bit over the years, and a number of
the recent additions never made it into all architectures, for one reason
or another.

This is an attempt to clean it up as far as we can without breaking
compatibility, doing a number of steps:

 - Add system calls that have not yet been integrated into all architectures
   but that we definitely want there. This includes {,f}statfs64() and
   get{eg,eu,g,p,u,pp}id() on alpha, which have been missing traditionally.

 - The s390 compat syscall handling is cleaned up to be more like what we
   do on other architectures, while keeping the 31-bit pointer
   extension. This was merged as a shared branch by the s390 maintainers
   and is included here in order to base the other patches on top.

 - Add the separate ipc syscalls on all architectures that traditionally
   only had sys_ipc(). This version is done without support for IPC_OLD
   that is we have in sys_ipc. The new semtimedop_time64 syscall will only
   be added here, not in sys_ipc

 - Add syscall numbers for a couple of syscalls that we probably don't need
   everywhere, in particular pkey_* and rseq, for the purpose of symmetry:
   if it's in asm-generic/unistd.h, it makes sense to have it everywhere. I
   expect that any future system calls will get assigned on all platforms
   together, even when they appear to be specific to a single architecture.

 - Prepare for having the same system call numbers for any future calls. In
   combination with the generated tables, this hopefully makes it easier to
   add new calls across all architectures together.

All of the above are technically separate from the y2038 work, but are done
as preparation before we add the new 64-bit time_t system calls everywhere,
providing a common baseline set of system calls.

I expect that glibc and other libraries that want to use 64-bit time_t will
require linux-5.1 kernel headers for building in the future, and at a much
later point may also require linux-5.1 or a later version as the minimum
kernel at runtime. Having a common baseline then allows the removal of many
architecture or kernel version specific workarounds.

46 files changed:
arch/alpha/include/asm/unistd.h
arch/alpha/include/uapi/asm/unistd.h
arch/alpha/kernel/syscalls/syscall.tbl
arch/arm/include/asm/unistd.h
arch/arm/tools/syscall.tbl
arch/arm64/include/asm/unistd.h
arch/arm64/include/asm/unistd32.h
arch/ia64/include/asm/unistd.h
arch/ia64/include/uapi/asm/unistd.h
arch/ia64/kernel/syscalls/syscall.tbl
arch/m68k/kernel/syscalls/syscall.tbl
arch/microblaze/kernel/syscalls/syscall.tbl
arch/mips/include/asm/unistd.h
arch/mips/kernel/syscalls/syscall_n32.tbl
arch/mips/kernel/syscalls/syscall_n64.tbl
arch/mips/kernel/syscalls/syscall_o32.tbl
arch/parisc/include/asm/unistd.h
arch/parisc/kernel/syscalls/syscall.tbl
arch/powerpc/kernel/syscalls/syscall.tbl
arch/s390/Kconfig
arch/s390/include/asm/syscall_wrapper.h [new file with mode: 0644]
arch/s390/include/asm/unistd.h
arch/s390/include/uapi/asm/posix_types.h
arch/s390/kernel/Makefile
arch/s390/kernel/compat_linux.c
arch/s390/kernel/compat_wrapper.c [deleted file]
arch/s390/kernel/entry.S
arch/s390/kernel/sys_s390.c
arch/s390/kernel/syscalls/syscall.tbl
arch/sh/include/uapi/asm/unistd_32.h [deleted file]
arch/sh/kernel/syscalls/syscall.tbl
arch/sparc/include/asm/unistd.h
arch/sparc/kernel/sys_sparc_64.c
arch/sparc/kernel/syscalls/syscall.tbl
arch/x86/entry/syscalls/syscall_32.tbl
arch/x86/entry/syscalls/syscall_64.tbl
arch/xtensa/include/asm/unistd.h
arch/xtensa/kernel/syscalls/syscall.tbl
include/linux/syscalls.h
include/uapi/asm-generic/unistd.h
ipc/msg.c
ipc/sem.c
ipc/shm.c
ipc/syscall.c
ipc/util.h
kernel/sys_ni.c

index 21b706a5b772f289fd977cd42e83da8fd68244bc..986f5da9b7d8b4a6c568e28914bedad459203d17 100644 (file)
 #define __ARCH_WANT_SYS_VFORK
 #define __ARCH_WANT_SYS_CLONE
 
-/*
- * Ignore legacy syscalls that we don't use.
- */
-#define __IGNORE_alarm
-#define __IGNORE_creat
-#define __IGNORE_getegid
-#define __IGNORE_geteuid
-#define __IGNORE_getgid
-#define __IGNORE_getpid
-#define __IGNORE_getppid
-#define __IGNORE_getuid
-#define __IGNORE_pause
-#define __IGNORE_time
-#define __IGNORE_utime
-#define __IGNORE_umount2
-
-/* Alpha doesn't have protection keys. */
-#define __IGNORE_pkey_mprotect
-#define __IGNORE_pkey_alloc
-#define __IGNORE_pkey_free
-
 #endif /* _ALPHA_UNISTD_H */
index 9ba724f116f1d129e71e352390c0622e53dc0a88..71fd5db06866d7193befa0ee58881724823998e6 100644 (file)
@@ -2,6 +2,16 @@
 #ifndef _UAPI_ALPHA_UNISTD_H
 #define _UAPI_ALPHA_UNISTD_H
 
+/* These are traditionally the names linux-alpha uses for
+ * the two otherwise generic system calls */
+#define __NR_umount    __NR_umount2
+#define __NR_osf_shmat __NR_shmat
+
+/* These return an extra value but can be used as aliases */
+#define __NR_getpid    __NR_getxpid
+#define __NR_getuid    __NR_getxuid
+#define __NR_getgid    __NR_getxgid
+
 #include <asm/unistd_32.h>
 
 #endif /* _UAPI_ALPHA_UNISTD_H */
index 7b56a53be5e302f584c82f740778f641ae00e153..340b88dd397ecd409aa6ca79a8f09f91b7135634 100644 (file)
@@ -29,7 +29,7 @@
 19     common  lseek                           sys_lseek
 20     common  getxpid                         sys_getxpid
 21     common  osf_mount                       sys_osf_mount
-22     common  umount                          sys_umount
+22     common  umount2                         sys_umount
 23     common  setuid                          sys_setuid
 24     common  getxuid                         sys_getxuid
 25     common  exec_with_loader                sys_ni_syscall
 187    common  osf_alt_sigpending              sys_ni_syscall
 188    common  osf_alt_setsid                  sys_ni_syscall
 199    common  osf_swapon                      sys_swapon
-200    common  msgctl                          sys_msgctl
+200    common  msgctl                          sys_old_msgctl
 201    common  msgget                          sys_msgget
 202    common  msgrcv                          sys_msgrcv
 203    common  msgsnd                          sys_msgsnd
-204    common  semctl                          sys_semctl
+204    common  semctl                          sys_old_semctl
 205    common  semget                          sys_semget
 206    common  semop                           sys_semop
 207    common  osf_utsname                     sys_osf_utsname
 208    common  lchown                          sys_lchown
-209    common  osf_shmat                       sys_shmat
-210    common  shmctl                          sys_shmctl
+209    common  shmat                           sys_shmat
+210    common  shmctl                          sys_old_shmctl
 211    common  shmdt                           sys_shmdt
 212    common  shmget                          sys_shmget
 213    common  osf_mvalid                      sys_ni_syscall
 520    common  preadv2                         sys_preadv2
 521    common  pwritev2                        sys_pwritev2
 522    common  statx                           sys_statx
+523    common  io_pgetevents                   sys_io_pgetevents
+524    common  pkey_mprotect                   sys_pkey_mprotect
+525    common  pkey_alloc                      sys_pkey_alloc
+526    common  pkey_free                       sys_pkey_free
+527    common  rseq                            sys_rseq
+528    common  statfs64                        sys_statfs64
+529    common  fstatfs64                       sys_fstatfs64
+530    common  getegid                         sys_getegid
+531    common  geteuid                         sys_geteuid
+532    common  getppid                         sys_getppid
index 88ef2ce1f69a151b70d7e6dc621cbf1089495fbb..d713587dfcf4189f49d5bf03feec078e41fe96e1 100644 (file)
@@ -45,7 +45,6 @@
  * Unimplemented (or alternatively implemented) syscalls
  */
 #define __IGNORE_fadvise64_64
-#define __IGNORE_migrate_pages
 
 #ifdef __ARM_EABI__
 /*
index 8edf93b4490fad24e4ef0c4195b6a535b4a87a94..b54b7f2bc24aaf67fcf722447b169fdb89e894d0 100644 (file)
 297    common  recvmsg                 sys_recvmsg
 298    common  semop                   sys_semop               sys_oabi_semop
 299    common  semget                  sys_semget
-300    common  semctl                  sys_semctl
+300    common  semctl                  sys_old_semctl
 301    common  msgsnd                  sys_msgsnd
 302    common  msgrcv                  sys_msgrcv
 303    common  msgget                  sys_msgget
-304    common  msgctl                  sys_msgctl
+304    common  msgctl                  sys_old_msgctl
 305    common  shmat                   sys_shmat
 306    common  shmdt                   sys_shmdt
 307    common  shmget                  sys_shmget
-308    common  shmctl                  sys_shmctl
+308    common  shmctl                  sys_old_shmctl
 309    common  add_key                 sys_add_key
 310    common  request_key             sys_request_key
 311    common  keyctl                  sys_keyctl
 397    common  statx                   sys_statx
 398    common  rseq                    sys_rseq
 399    common  io_pgetevents           sys_io_pgetevents
+400    common  migrate_pages           sys_migrate_pages
+401    common  kexec_file_load         sys_kexec_file_load
index a7b1fc58ffdffdd0d58b22297b25a9d91995cd0e..2c30e6f145ff2c9f00e6b5fe4c24e6144cc5a61f 100644 (file)
@@ -44,7 +44,7 @@
 #define __ARM_NR_compat_set_tls                (__ARM_NR_COMPAT_BASE + 5)
 #define __ARM_NR_COMPAT_END            (__ARM_NR_COMPAT_BASE + 0x800)
 
-#define __NR_compat_syscalls           400
+#define __NR_compat_syscalls           402
 #endif
 
 #define __ARCH_WANT_SYS_CLONE
index 04ee190b90fe6f2fe6c1655ba9f94f49aaee9958..d10cce69a4b043496a09a9c3fc178203feffa6a0 100644 (file)
@@ -622,7 +622,7 @@ __SYSCALL(__NR_semop, sys_semop)
 #define __NR_semget 299
 __SYSCALL(__NR_semget, sys_semget)
 #define __NR_semctl 300
-__SYSCALL(__NR_semctl, compat_sys_semctl)
+__SYSCALL(__NR_semctl, compat_sys_old_semctl)
 #define __NR_msgsnd 301
 __SYSCALL(__NR_msgsnd, compat_sys_msgsnd)
 #define __NR_msgrcv 302
@@ -630,7 +630,7 @@ __SYSCALL(__NR_msgrcv, compat_sys_msgrcv)
 #define __NR_msgget 303
 __SYSCALL(__NR_msgget, sys_msgget)
 #define __NR_msgctl 304
-__SYSCALL(__NR_msgctl, compat_sys_msgctl)
+__SYSCALL(__NR_msgctl, compat_sys_old_msgctl)
 #define __NR_shmat 305
 __SYSCALL(__NR_shmat, compat_sys_shmat)
 #define __NR_shmdt 306
@@ -638,7 +638,7 @@ __SYSCALL(__NR_shmdt, sys_shmdt)
 #define __NR_shmget 307
 __SYSCALL(__NR_shmget, sys_shmget)
 #define __NR_shmctl 308
-__SYSCALL(__NR_shmctl, compat_sys_shmctl)
+__SYSCALL(__NR_shmctl, compat_sys_old_shmctl)
 #define __NR_add_key 309
 __SYSCALL(__NR_add_key, sys_add_key)
 #define __NR_request_key 310
@@ -821,6 +821,10 @@ __SYSCALL(__NR_statx, sys_statx)
 __SYSCALL(__NR_rseq, sys_rseq)
 #define __NR_io_pgetevents 399
 __SYSCALL(__NR_io_pgetevents, compat_sys_io_pgetevents)
+#define __NR_migrate_pages 400
+__SYSCALL(__NR_migrate_pages, compat_sys_migrate_pages)
+#define __NR_kexec_file_load 401
+__SYSCALL(__NR_kexec_file_load, sys_kexec_file_load)
 
 /*
  * Please add new compat syscalls above this comment and update
index 0b08ebd2dfded3847f1683312867432a2347ff69..9ba6110b10b9c0637aaa071d1c7384a13578c578 100644 (file)
 
 #define NR_syscalls            __NR_syscalls /* length of syscall table */
 
-/*
- * The following defines stop scripts/checksyscalls.sh from complaining about
- * unimplemented system calls.  Glibc provides for each of these by using
- * more modern equivalent system calls.
- */
-#define __IGNORE_fork          /* clone() */
-#define __IGNORE_time          /* gettimeofday() */
-#define __IGNORE_alarm         /* setitimer(ITIMER_REAL, ... */
-#define __IGNORE_pause         /* rt_sigprocmask(), rt_sigsuspend() */
-#define __IGNORE_utime         /* utimes() */
-#define __IGNORE_getpgrp       /* getpgid() */
-#define __IGNORE_vfork         /* clone() */
-#define __IGNORE_umount2       /* umount() */
-
 #define __ARCH_WANT_NEW_STAT
 #define __ARCH_WANT_SYS_UTIME
 
index b2513922dcb5c7672da0512d296f66bf6b913ce5..013e0bcacc39e0254d7fc08c4c0505fa64f36393 100644 (file)
@@ -15,6 +15,8 @@
 
 #define __NR_Linux      1024
 
+#define __NR_umount __NR_umount2
+
 #include <asm/unistd_64.h>
 
 #endif /* _UAPI_ASM_IA64_UNISTD_H */
index b22203b40bfe3147b5c1468c51865b0f27d630f4..52319006de0d7e0766fe0e85bdff638beb7cf598 100644 (file)
@@ -29,7 +29,7 @@
 17     common  getpid                          sys_getpid
 18     common  getppid                         sys_getppid
 19     common  mount                           sys_mount
-20     common  umount                          sys_umount
+20     common  umount2                         sys_umount
 21     common  setuid                          sys_setuid
 22     common  getuid                          sys_getuid
 23     common  geteuid                         sys_geteuid
 323    common  copy_file_range                 sys_copy_file_range
 324    common  preadv2                         sys_preadv2
 325    common  pwritev2                        sys_pwritev2
+326    common  statx                           sys_statx
+327    common  io_pgetevents                   sys_io_pgetevents
+328    common  perf_event_open                 sys_perf_event_open
+329    common  seccomp                         sys_seccomp
+330    common  pkey_mprotect                   sys_pkey_mprotect
+331    common  pkey_alloc                      sys_pkey_alloc
+332    common  pkey_free                       sys_pkey_free
+333    common  rseq                            sys_rseq
index 1a95c4a1bc0d786ca69c92c33311e73c551d25c9..bffffb202f8af98e60cd8353dbac337f26baa78c 100644 (file)
 377    common  preadv2                         sys_preadv2
 378    common  pwritev2                        sys_pwritev2
 379    common  statx                           sys_statx
+380    common  seccomp                         sys_seccomp
+381    common  pkey_mprotect                   sys_pkey_mprotect
+382    common  pkey_alloc                      sys_pkey_alloc
+383    common  pkey_free                       sys_pkey_free
+384    common  rseq                            sys_rseq
+# room for arch specific calls
+393    common  semget                          sys_semget
+394    common  semctl                          sys_semctl
+395    common  shmget                          sys_shmget
+396    common  shmctl                          sys_shmctl
+397    common  shmat                           sys_shmat
+398    common  shmdt                           sys_shmdt
+399    common  msgget                          sys_msgget
+400    common  msgsnd                          sys_msgsnd
+401    common  msgrcv                          sys_msgrcv
+402    common  msgctl                          sys_msgctl
index a24d09e937dd76f9bbc4bbb74342ae683a73216e..7cc0f9554da39a492adee9dbed493d72df349e73 100644 (file)
 325    common  semtimedop                      sys_semtimedop
 326    common  timerfd_settime                 sys_timerfd_settime
 327    common  timerfd_gettime                 sys_timerfd_gettime
-328    common  semctl                          sys_semctl
+328    common  semctl                          sys_old_semctl
 329    common  semget                          sys_semget
 330    common  semop                           sys_semop
-331    common  msgctl                          sys_msgctl
+331    common  msgctl                          sys_old_msgctl
 332    common  msgget                          sys_msgget
 333    common  msgrcv                          sys_msgrcv
 334    common  msgsnd                          sys_msgsnd
 335    common  shmat                           sys_shmat
-336    common  shmctl                          sys_shmctl
+336    common  shmctl                          sys_old_shmctl
 337    common  shmdt                           sys_shmdt
 338    common  shmget                          sys_shmget
 339    common  signalfd4                       sys_signalfd4
index b23d74a601b38202efa80368f6a1ba1a056c67bc..75c590229a23df2e447922937b25dd072a18cd00 100644 (file)
 #define __ARCH_WANT_SYS_CLONE
 
 /* whitelists for checksyscalls */
-#define __IGNORE_select
-#define __IGNORE_vfork
-#define __IGNORE_time
-#define __IGNORE_uselib
 #define __IGNORE_fadvise64_64
-#define __IGNORE_getdents64
-#if _MIPS_SIM == _MIPS_SIM_NABI32
-#define __IGNORE_truncate64
-#define __IGNORE_ftruncate64
-#define __IGNORE_stat64
-#define __IGNORE_lstat64
-#define __IGNORE_fstat64
-#define __IGNORE_fstatat64
-#endif
 
 #endif /* !__ASSEMBLY__ */
 
index 53d5862649aea1367be50d84728993dc6dbd34c5..cc134b1211aa064a2a32274b0d5ae9fdba2d4335 100644 (file)
@@ -37,7 +37,7 @@
 27     n32     madvise                         sys_madvise
 28     n32     shmget                          sys_shmget
 29     n32     shmat                           sys_shmat
-30     n32     shmctl                          compat_sys_shmctl
+30     n32     shmctl                          compat_sys_old_shmctl
 31     n32     dup                             sys_dup
 32     n32     dup2                            sys_dup2
 33     n32     pause                           sys_pause
 61     n32     uname                           sys_newuname
 62     n32     semget                          sys_semget
 63     n32     semop                           sys_semop
-64     n32     semctl                          compat_sys_semctl
+64     n32     semctl                          compat_sys_old_semctl
 65     n32     shmdt                           sys_shmdt
 66     n32     msgget                          sys_msgget
 67     n32     msgsnd                          compat_sys_msgsnd
 68     n32     msgrcv                          compat_sys_msgrcv
-69     n32     msgctl                          compat_sys_msgctl
+69     n32     msgctl                          compat_sys_old_msgctl
 70     n32     fcntl                           compat_sys_fcntl
 71     n32     flock                           sys_flock
 72     n32     fsync                           sys_fsync
index a8286ccbb66ce404e29f217936c263a48a6b9265..af0da757a7b2d2a2f696cf5cfde4583859e8fb6a 100644 (file)
@@ -37,7 +37,7 @@
 27     n64     madvise                         sys_madvise
 28     n64     shmget                          sys_shmget
 29     n64     shmat                           sys_shmat
-30     n64     shmctl                          sys_shmctl
+30     n64     shmctl                          sys_old_shmctl
 31     n64     dup                             sys_dup
 32     n64     dup2                            sys_dup2
 33     n64     pause                           sys_pause
 61     n64     uname                           sys_newuname
 62     n64     semget                          sys_semget
 63     n64     semop                           sys_semop
-64     n64     semctl                          sys_semctl
+64     n64     semctl                          sys_old_semctl
 65     n64     shmdt                           sys_shmdt
 66     n64     msgget                          sys_msgget
 67     n64     msgsnd                          sys_msgsnd
 68     n64     msgrcv                          sys_msgrcv
-69     n64     msgctl                          sys_msgctl
+69     n64     msgctl                          sys_old_msgctl
 70     n64     fcntl                           sys_fcntl
 71     n64     flock                           sys_flock
 72     n64     fsync                           sys_fsync
index 3d5a47b80d2b88f0af95b4c2cdc93a752b095529..fa47ea8cc6ef04fb2db00e679ce325acc4f2dee7 100644 (file)
 366    o32     statx                           sys_statx
 367    o32     rseq                            sys_rseq
 368    o32     io_pgetevents                   sys_io_pgetevents               compat_sys_io_pgetevents
+# room for arch specific calls
+393    o32     semget                          sys_semget
+394    o32     semctl                          sys_semctl                      compat_sys_semctl
+395    o32     shmget                          sys_shmget
+396    o32     shmctl                          sys_shmctl                      compat_sys_shmctl
+397    o32     shmat                           sys_shmat                       compat_sys_shmat
+398    o32     shmdt                           sys_shmdt
+399    o32     msgget                          sys_msgget
+400    o32     msgsnd                          sys_msgsnd                      compat_sys_msgsnd
+401    o32     msgrcv                          sys_msgrcv                      compat_sys_msgrcv
+402    o32     msgctl                          sys_msgctl                      compat_sys_msgctl
index c2c2afb28941c16eedea2e8dfb67d53c2fad0fdc..ac742b80e33353baaa3f4a3e17eecb3595d20952 100644 (file)
 
 #define SYS_ify(syscall_name)   __NR_##syscall_name
 
-#define __IGNORE_select                        /* newselect */
 #define __IGNORE_fadvise64             /* fadvise64_64 */
-#define __IGNORE_pkey_mprotect
-#define __IGNORE_pkey_alloc
-#define __IGNORE_pkey_free
 
 #ifndef ASM_LINE_SEP
 # define ASM_LINE_SEP ;
index 9bbd2f9f56c84fdc64d1fe1eb635873736ee3630..71873bb72782c10b24387ba1f600ca5598dd0acb 100644 (file)
 348    common  pwritev2                sys_pwritev2                    compat_sys_pwritev2
 349    common  statx                   sys_statx
 350    common  io_pgetevents           sys_io_pgetevents               compat_sys_io_pgetevents
+351    common  pkey_mprotect           sys_pkey_mprotect
+352    common  pkey_alloc              sys_pkey_alloc
+353    common  pkey_free               sys_pkey_free
+354    common  rseq                    sys_rseq
index db3bbb8744afb7515f6a5c9410c3fd398a811f2f..7555874ce39cde8f1dc220daf169e93edf0616dc 100644 (file)
 363    spu     switch_endian                   sys_ni_syscall
 364    common  userfaultfd                     sys_userfaultfd
 365    common  membarrier                      sys_membarrier
+# 366-377 originally left for IPC, now unused
 378    nospu   mlock2                          sys_mlock2
 379    nospu   copy_file_range                 sys_copy_file_range
 380    common  preadv2                         sys_preadv2                     compat_sys_preadv2
 386    nospu   pkey_mprotect                   sys_pkey_mprotect
 387    nospu   rseq                            sys_rseq
 388    nospu   io_pgetevents                   sys_io_pgetevents               compat_sys_io_pgetevents
+# room for arch specific syscalls
+392    64      semtimedop                      sys_semtimedop
+393    common  semget                          sys_semget
+394    common  semctl                          sys_semctl                      compat_sys_semctl
+395    common  shmget                          sys_shmget
+396    common  shmctl                          sys_shmctl                      compat_sys_shmctl
+397    common  shmat                           sys_shmat                       compat_sys_shmat
+398    common  shmdt                           sys_shmdt
+399    common  msgget                          sys_msgget
+400    common  msgsnd                          sys_msgsnd                      compat_sys_msgsnd
+401    common  msgrcv                          sys_msgrcv                      compat_sys_msgrcv
+402    common  msgctl                          sys_msgctl                      compat_sys_msgctl
index ed554b09eb3f176eac1653f145cb3717df6aba08..b6e3d0653002af7a8eb20b5a0f3e0d8b27ba0b16 100644 (file)
@@ -75,6 +75,7 @@ config S390
        select ARCH_HAS_SET_MEMORY
        select ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_HAS_STRICT_MODULE_RWX
+       select ARCH_HAS_SYSCALL_WRAPPER
        select ARCH_HAS_UBSAN_SANITIZE_ALL
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select ARCH_INLINE_READ_LOCK
@@ -379,6 +380,7 @@ config COMPAT
        select COMPAT_BINFMT_ELF if BINFMT_ELF
        select ARCH_WANT_OLD_COMPAT_IPC
        select COMPAT_OLD_SIGACTION
+       select HAVE_UID16
        depends on MULTIUSER
        help
          Select this option if you want to enable your system kernel to
diff --git a/arch/s390/include/asm/syscall_wrapper.h b/arch/s390/include/asm/syscall_wrapper.h
new file mode 100644 (file)
index 0000000..5596c5c
--- /dev/null
@@ -0,0 +1,135 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * syscall_wrapper.h - s390 specific wrappers to syscall definitions
+ *
+ */
+
+#ifndef _ASM_S390_SYSCALL_WRAPPER_H
+#define _ASM_S390_SYSCALL_WRAPPER_H
+
+#ifdef CONFIG_COMPAT
+#define __SC_COMPAT_TYPE(t, a) \
+       __typeof(__builtin_choose_expr(sizeof(t) > 4, 0L, (t)0)) a
+
+#define __SC_COMPAT_CAST(t, a)                                         \
+({                                                                     \
+       long __ReS = a;                                                 \
+                                                                       \
+       BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) &&              \
+                    !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t) &&           \
+                    !__TYPE_IS_LL(t));                                 \
+       if (__TYPE_IS_L(t))                                             \
+               __ReS = (s32)a;                                         \
+       if (__TYPE_IS_UL(t))                                            \
+               __ReS = (u32)a;                                         \
+       if (__TYPE_IS_PTR(t))                                           \
+               __ReS = a & 0x7fffffff;                                 \
+       if (__TYPE_IS_LL(t))                                            \
+               return -ENOSYS;                                         \
+       (t)__ReS;                                                       \
+})
+
+#define __S390_SYS_STUBx(x, name, ...)                                 \
+       asmlinkage long __s390_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__))\
+       ALLOW_ERROR_INJECTION(__s390_sys##name, ERRNO);                 \
+       asmlinkage long __s390_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__))\
+       {                                                               \
+               long ret = __s390x_sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__));\
+               __MAP(x,__SC_TEST,__VA_ARGS__);                         \
+               return ret;                                             \
+       }
+
+/*
+ * To keep the naming coherent, re-define SYSCALL_DEFINE0 to create an alias
+ * named __s390x_sys_*()
+ */
+#define COMPAT_SYSCALL_DEFINE0(sname)                                  \
+       SYSCALL_METADATA(_##sname, 0);                                  \
+       asmlinkage long __s390_compat_sys_##sname(void);                \
+       ALLOW_ERROR_INJECTION(__s390_compat__sys_##sname, ERRNO);       \
+       asmlinkage long __s390_compat_sys_##sname(void)
+
+#define SYSCALL_DEFINE0(sname)                                         \
+       SYSCALL_METADATA(_##sname, 0);                                  \
+       asmlinkage long __s390x_sys_##sname(void);                      \
+       ALLOW_ERROR_INJECTION(__s390x_sys_##sname, ERRNO);              \
+       asmlinkage long __s390_sys_##sname(void)                        \
+               __attribute__((alias(__stringify(__s390x_sys_##sname)))); \
+       asmlinkage long __s390x_sys_##sname(void)
+
+#define COND_SYSCALL(name)                                             \
+       cond_syscall(__s390x_sys_##name);                               \
+       cond_syscall(__s390_sys_##name)
+
+#define SYS_NI(name)                                                   \
+       SYSCALL_ALIAS(__s390x_sys_##name, sys_ni_posix_timers);         \
+       SYSCALL_ALIAS(__s390_sys_##name, sys_ni_posix_timers)
+
+#define COMPAT_SYSCALL_DEFINEx(x, name, ...)                                   \
+       __diag_push();                                                          \
+       __diag_ignore(GCC, 8, "-Wattribute-alias",                              \
+                     "Type aliasing is used to sanitize syscall arguments");\
+       asmlinkage long __s390_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));        \
+       asmlinkage long __s390_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
+               __attribute__((alias(__stringify(__se_compat_sys##name))));     \
+       ALLOW_ERROR_INJECTION(compat_sys##name, ERRNO);                         \
+       static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
+       asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__));  \
+       asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__))   \
+       {                                                                       \
+               long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\
+               __MAP(x,__SC_TEST,__VA_ARGS__);                                 \
+               return ret;                                                     \
+       }                                                                       \
+       __diag_pop();                                                           \
+       static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
+
+/*
+ * As some compat syscalls may not be implemented, we need to expand
+ * COND_SYSCALL_COMPAT in kernel/sys_ni.c and COMPAT_SYS_NI in
+ * kernel/time/posix-stubs.c to cover this case as well.
+ */
+#define COND_SYSCALL_COMPAT(name)                                      \
+       cond_syscall(__s390_compat_sys_##name)
+
+#define COMPAT_SYS_NI(name)                                            \
+       SYSCALL_ALIAS(__s390_compat_sys_##name, sys_ni_posix_timers)
+
+#else /* CONFIG_COMPAT */
+
+#define __S390_SYS_STUBx(x, fullname, name, ...)
+
+#define SYSCALL_DEFINE0(sname)                                         \
+       SYSCALL_METADATA(_##sname, 0);                                  \
+       asmlinkage long __s390x_sys_##sname(void);                      \
+       ALLOW_ERROR_INJECTION(__s390x_sys_##sname, ERRNO);              \
+       asmlinkage long __s390x_sys_##sname(void)
+
+#define COND_SYSCALL(name)                                             \
+       cond_syscall(__s390x_sys_##name)
+
+#define SYS_NI(name)                                                   \
+       SYSCALL_ALIAS(__s390x_sys_##name, sys_ni_posix_timers);
+
+#endif /* CONFIG_COMPAT */
+
+#define __SYSCALL_DEFINEx(x, name, ...)                                                \
+       __diag_push();                                                          \
+       __diag_ignore(GCC, 8, "-Wattribute-alias",                              \
+                     "Type aliasing is used to sanitize syscall arguments");\
+       asmlinkage long __s390x_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))       \
+               __attribute__((alias(__stringify(__se_sys##name))));            \
+       ALLOW_ERROR_INJECTION(__s390x_sys##name, ERRNO);                                \
+       static long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__));             \
+       static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));      \
+       __S390_SYS_STUBx(x, name, __VA_ARGS__)                                  \
+       asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__))          \
+       {                                                                       \
+               long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));      \
+               __MAP(x,__SC_TEST,__VA_ARGS__);                                 \
+               return ret;                                                     \
+       }                                                                       \
+       __diag_pop();                                                           \
+       static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
+
+#endif /* _ASM_X86_SYSCALL_WRAPPER_H */
index a1fbf15d53aa8973082de0738063005a82c7529f..59202ceea1f6fe0596700356ed0511d24a95f32b 100644 (file)
 #include <uapi/asm/unistd.h>
 #include <asm/unistd_nr.h>
 
-#define __IGNORE_time
-#define __IGNORE_pkey_mprotect
-#define __IGNORE_pkey_alloc
-#define __IGNORE_pkey_free
-
 #define __ARCH_WANT_NEW_STAT
 #define __ARCH_WANT_OLD_READDIR
 #define __ARCH_WANT_SYS_ALARM
index 2a3fc638414b3b60b215ae1ca243291b5544e0ee..1913613e71b6282fc68de6facea1c31bd8811a8a 100644 (file)
@@ -20,6 +20,12 @@ typedef long            __kernel_ssize_t;
 typedef unsigned short __kernel_old_dev_t;
 #define __kernel_old_dev_t __kernel_old_dev_t
 
+#ifdef __KERNEL__
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+#endif
+
 #ifndef __s390x__
 
 typedef unsigned long   __kernel_ino_t;
index e216e116a9a9168bea6317723dec977fa00bff21..4e188a7be501b098a3ad5fc77dda238540ff9b17 100644 (file)
@@ -65,7 +65,7 @@ obj-$(CONFIG_HIBERNATION)     += suspend.o swsusp.o
 obj-$(CONFIG_AUDIT)            += audit.o
 compat-obj-$(CONFIG_AUDIT)     += compat_audit.o
 obj-$(CONFIG_COMPAT)           += compat_linux.o compat_signal.o
-obj-$(CONFIG_COMPAT)           += compat_wrapper.o $(compat-obj-y)
+obj-$(CONFIG_COMPAT)           += $(compat-obj-y)
 obj-$(CONFIG_EARLY_PRINTK)     += early_printk.o
 obj-$(CONFIG_STACKTRACE)       += stacktrace.o
 obj-$(CONFIG_KPROBES)          += kprobes.o
index 8ac38d51ed7de4f467ea7c69760b5a6f84a78998..f9d418d1b619255bf400a07437dc4c6e51d3328a 100644 (file)
@@ -34,7 +34,6 @@
 #include <linux/stat.h>
 #include <linux/filter.h>
 #include <linux/highmem.h>
-#include <linux/highuid.h>
 #include <linux/mman.h>
 #include <linux/ipv6.h>
 #include <linux/in.h>
 
 #include "compat_linux.h"
 
-/* For this source file, we want overflow handling. */
-
-#undef high2lowuid
-#undef high2lowgid
-#undef low2highuid
-#undef low2highgid
-#undef SET_UID16
-#undef SET_GID16
-#undef NEW_TO_OLD_UID
-#undef NEW_TO_OLD_GID
-#undef SET_OLDSTAT_UID
-#undef SET_OLDSTAT_GID
-#undef SET_STAT_UID
-#undef SET_STAT_GID
-
-#define high2lowuid(uid) ((uid) > 65535) ? (u16)overflowuid : (u16)(uid)
-#define high2lowgid(gid) ((gid) > 65535) ? (u16)overflowgid : (u16)(gid)
-#define low2highuid(uid) ((uid) == (u16)-1) ? (uid_t)-1 : (uid_t)(uid)
-#define low2highgid(gid) ((gid) == (u16)-1) ? (gid_t)-1 : (gid_t)(gid)
-#define SET_UID16(var, uid)    var = high2lowuid(uid)
-#define SET_GID16(var, gid)    var = high2lowgid(gid)
-#define NEW_TO_OLD_UID(uid)    high2lowuid(uid)
-#define NEW_TO_OLD_GID(gid)    high2lowgid(gid)
-#define SET_OLDSTAT_UID(stat, uid)     (stat).st_uid = high2lowuid(uid)
-#define SET_OLDSTAT_GID(stat, gid)     (stat).st_gid = high2lowgid(gid)
-#define SET_STAT_UID(stat, uid)                (stat).st_uid = high2lowuid(uid)
-#define SET_STAT_GID(stat, gid)                (stat).st_gid = high2lowgid(gid)
-
-COMPAT_SYSCALL_DEFINE3(s390_chown16, const char __user *, filename,
-                      u16, user, u16, group)
-{
-       return ksys_chown(filename, low2highuid(user), low2highgid(group));
-}
-
-COMPAT_SYSCALL_DEFINE3(s390_lchown16, const char __user *,
-                      filename, u16, user, u16, group)
-{
-       return ksys_lchown(filename, low2highuid(user), low2highgid(group));
-}
-
-COMPAT_SYSCALL_DEFINE3(s390_fchown16, unsigned int, fd, u16, user, u16, group)
-{
-       return ksys_fchown(fd, low2highuid(user), low2highgid(group));
-}
-
-COMPAT_SYSCALL_DEFINE2(s390_setregid16, u16, rgid, u16, egid)
-{
-       return sys_setregid(low2highgid(rgid), low2highgid(egid));
-}
-
-COMPAT_SYSCALL_DEFINE1(s390_setgid16, u16, gid)
-{
-       return sys_setgid(low2highgid(gid));
-}
-
-COMPAT_SYSCALL_DEFINE2(s390_setreuid16, u16, ruid, u16, euid)
-{
-       return sys_setreuid(low2highuid(ruid), low2highuid(euid));
-}
-
-COMPAT_SYSCALL_DEFINE1(s390_setuid16, u16, uid)
-{
-       return sys_setuid(low2highuid(uid));
-}
-
-COMPAT_SYSCALL_DEFINE3(s390_setresuid16, u16, ruid, u16, euid, u16, suid)
-{
-       return sys_setresuid(low2highuid(ruid), low2highuid(euid),
-                            low2highuid(suid));
-}
-
-COMPAT_SYSCALL_DEFINE3(s390_getresuid16, u16 __user *, ruidp,
-                      u16 __user *, euidp, u16 __user *, suidp)
-{
-       const struct cred *cred = current_cred();
-       int retval;
-       u16 ruid, euid, suid;
-
-       ruid = high2lowuid(from_kuid_munged(cred->user_ns, cred->uid));
-       euid = high2lowuid(from_kuid_munged(cred->user_ns, cred->euid));
-       suid = high2lowuid(from_kuid_munged(cred->user_ns, cred->suid));
-
-       if (!(retval   = put_user(ruid, ruidp)) &&
-           !(retval   = put_user(euid, euidp)))
-               retval = put_user(suid, suidp);
-
-       return retval;
-}
-
-COMPAT_SYSCALL_DEFINE3(s390_setresgid16, u16, rgid, u16, egid, u16, sgid)
-{
-       return sys_setresgid(low2highgid(rgid), low2highgid(egid),
-                            low2highgid(sgid));
-}
-
-COMPAT_SYSCALL_DEFINE3(s390_getresgid16, u16 __user *, rgidp,
-                      u16 __user *, egidp, u16 __user *, sgidp)
-{
-       const struct cred *cred = current_cred();
-       int retval;
-       u16 rgid, egid, sgid;
-
-       rgid = high2lowgid(from_kgid_munged(cred->user_ns, cred->gid));
-       egid = high2lowgid(from_kgid_munged(cred->user_ns, cred->egid));
-       sgid = high2lowgid(from_kgid_munged(cred->user_ns, cred->sgid));
-
-       if (!(retval   = put_user(rgid, rgidp)) &&
-           !(retval   = put_user(egid, egidp)))
-               retval = put_user(sgid, sgidp);
-
-       return retval;
-}
-
-COMPAT_SYSCALL_DEFINE1(s390_setfsuid16, u16, uid)
-{
-       return sys_setfsuid(low2highuid(uid));
-}
-
-COMPAT_SYSCALL_DEFINE1(s390_setfsgid16, u16, gid)
-{
-       return sys_setfsgid(low2highgid(gid));
-}
-
-static int groups16_to_user(u16 __user *grouplist, struct group_info *group_info)
-{
-       struct user_namespace *user_ns = current_user_ns();
-       int i;
-       u16 group;
-       kgid_t kgid;
-
-       for (i = 0; i < group_info->ngroups; i++) {
-               kgid = group_info->gid[i];
-               group = (u16)from_kgid_munged(user_ns, kgid);
-               if (put_user(group, grouplist+i))
-                       return -EFAULT;
-       }
-
-       return 0;
-}
-
-static int groups16_from_user(struct group_info *group_info, u16 __user *grouplist)
-{
-       struct user_namespace *user_ns = current_user_ns();
-       int i;
-       u16 group;
-       kgid_t kgid;
-
-       for (i = 0; i < group_info->ngroups; i++) {
-               if (get_user(group, grouplist+i))
-                       return  -EFAULT;
-
-               kgid = make_kgid(user_ns, (gid_t)group);
-               if (!gid_valid(kgid))
-                       return -EINVAL;
-
-               group_info->gid[i] = kgid;
-       }
-
-       return 0;
-}
-
-COMPAT_SYSCALL_DEFINE2(s390_getgroups16, int, gidsetsize, u16 __user *, grouplist)
-{
-       const struct cred *cred = current_cred();
-       int i;
-
-       if (gidsetsize < 0)
-               return -EINVAL;
-
-       get_group_info(cred->group_info);
-       i = cred->group_info->ngroups;
-       if (gidsetsize) {
-               if (i > gidsetsize) {
-                       i = -EINVAL;
-                       goto out;
-               }
-               if (groups16_to_user(grouplist, cred->group_info)) {
-                       i = -EFAULT;
-                       goto out;
-               }
-       }
-out:
-       put_group_info(cred->group_info);
-       return i;
-}
-
-COMPAT_SYSCALL_DEFINE2(s390_setgroups16, int, gidsetsize, u16 __user *, grouplist)
-{
-       struct group_info *group_info;
-       int retval;
-
-       if (!may_setgroups())
-               return -EPERM;
-       if ((unsigned)gidsetsize > NGROUPS_MAX)
-               return -EINVAL;
-
-       group_info = groups_alloc(gidsetsize);
-       if (!group_info)
-               return -ENOMEM;
-       retval = groups16_from_user(group_info, grouplist);
-       if (retval) {
-               put_group_info(group_info);
-               return retval;
-       }
-
-       groups_sort(group_info);
-       retval = set_current_groups(group_info);
-       put_group_info(group_info);
-
-       return retval;
-}
-
-COMPAT_SYSCALL_DEFINE0(s390_getuid16)
-{
-       return high2lowuid(from_kuid_munged(current_user_ns(), current_uid()));
-}
-
-COMPAT_SYSCALL_DEFINE0(s390_geteuid16)
-{
-       return high2lowuid(from_kuid_munged(current_user_ns(), current_euid()));
-}
-
-COMPAT_SYSCALL_DEFINE0(s390_getgid16)
-{
-       return high2lowgid(from_kgid_munged(current_user_ns(), current_gid()));
-}
-
-COMPAT_SYSCALL_DEFINE0(s390_getegid16)
-{
-       return high2lowgid(from_kgid_munged(current_user_ns(), current_egid()));
-}
-
 #ifdef CONFIG_SYSVIPC
 COMPAT_SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, compat_ulong_t, second,
                compat_ulong_t, third, compat_uptr_t, ptr)
 {
        if (call >> 16)         /* hack for backward compatibility */
                return -EINVAL;
-       return compat_sys_ipc(call, first, second, third, ptr, third);
+       return compat_ksys_ipc(call, first, second, third, ptr, third);
 }
 #endif
 
diff --git a/arch/s390/kernel/compat_wrapper.c b/arch/s390/kernel/compat_wrapper.c
deleted file mode 100644 (file)
index 48c4ce6..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- *  Compat system call wrappers.
- *
- *    Copyright IBM Corp. 2014
- */
-
-#include <linux/syscalls.h>
-#include <linux/compat.h>
-#include "entry.h"
-
-#define COMPAT_SYSCALL_WRAP1(name, ...) \
-       COMPAT_SYSCALL_WRAPx(1, _##name, __VA_ARGS__)
-#define COMPAT_SYSCALL_WRAP2(name, ...) \
-       COMPAT_SYSCALL_WRAPx(2, _##name, __VA_ARGS__)
-#define COMPAT_SYSCALL_WRAP3(name, ...) \
-       COMPAT_SYSCALL_WRAPx(3, _##name, __VA_ARGS__)
-#define COMPAT_SYSCALL_WRAP4(name, ...) \
-       COMPAT_SYSCALL_WRAPx(4, _##name, __VA_ARGS__)
-#define COMPAT_SYSCALL_WRAP5(name, ...) \
-       COMPAT_SYSCALL_WRAPx(5, _##name, __VA_ARGS__)
-#define COMPAT_SYSCALL_WRAP6(name, ...) \
-       COMPAT_SYSCALL_WRAPx(6, _##name, __VA_ARGS__)
-
-#define __SC_COMPAT_TYPE(t, a) \
-       __typeof(__builtin_choose_expr(sizeof(t) > 4, 0L, (t)0)) a
-
-#define __SC_COMPAT_CAST(t, a)                                         \
-({                                                                     \
-       long __ReS = a;                                                 \
-                                                                       \
-       BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) &&              \
-                    !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t));            \
-       if (__TYPE_IS_L(t))                                             \
-               __ReS = (s32)a;                                         \
-       if (__TYPE_IS_UL(t))                                            \
-               __ReS = (u32)a;                                         \
-       if (__TYPE_IS_PTR(t))                                           \
-               __ReS = a & 0x7fffffff;                                 \
-       (t)__ReS;                                                       \
-})
-
-/*
- * The COMPAT_SYSCALL_WRAP macro generates system call wrappers to be used by
- * compat tasks. These wrappers will only be used for system calls where only
- * the system call arguments need sign or zero extension or zeroing of the upper
- * 33 bits of pointers.
- * Note: since the wrapper function will afterwards call a system call which
- * again performs zero and sign extension for all system call arguments with
- * a size of less than eight bytes, these compat wrappers only touch those
- * system call arguments with a size of eight bytes ((unsigned) long and
- * pointers). Zero and sign extension for e.g. int parameters will be done by
- * the regular system call wrappers.
- */
-#define COMPAT_SYSCALL_WRAPx(x, name, ...)                                     \
-asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));                     \
-asmlinkage long notrace compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__));\
-asmlinkage long notrace compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__))        \
-{                                                                              \
-       return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__));                \
-}
-
-COMPAT_SYSCALL_WRAP2(creat, const char __user *, pathname, umode_t, mode);
-COMPAT_SYSCALL_WRAP2(link, const char __user *, oldname, const char __user *, newname);
-COMPAT_SYSCALL_WRAP1(unlink, const char __user *, pathname);
-COMPAT_SYSCALL_WRAP1(chdir, const char __user *, filename);
-COMPAT_SYSCALL_WRAP3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev);
-COMPAT_SYSCALL_WRAP2(chmod, const char __user *, filename, umode_t, mode);
-COMPAT_SYSCALL_WRAP1(oldumount, char __user *, name);
-COMPAT_SYSCALL_WRAP2(access, const char __user *, filename, int, mode);
-COMPAT_SYSCALL_WRAP2(rename, const char __user *, oldname, const char __user *, newname);
-COMPAT_SYSCALL_WRAP2(mkdir, const char __user *, pathname, umode_t, mode);
-COMPAT_SYSCALL_WRAP1(rmdir, const char __user *, pathname);
-COMPAT_SYSCALL_WRAP1(pipe, int __user *, fildes);
-COMPAT_SYSCALL_WRAP1(brk, unsigned long, brk);
-COMPAT_SYSCALL_WRAP2(signal, int, sig, __sighandler_t, handler);
-COMPAT_SYSCALL_WRAP1(acct, const char __user *, name);
-COMPAT_SYSCALL_WRAP2(umount, char __user *, name, int, flags);
-COMPAT_SYSCALL_WRAP1(chroot, const char __user *, filename);
-COMPAT_SYSCALL_WRAP3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask);
-COMPAT_SYSCALL_WRAP2(sethostname, char __user *, name, int, len);
-COMPAT_SYSCALL_WRAP2(symlink, const char __user *, old, const char __user *, new);
-COMPAT_SYSCALL_WRAP3(readlink, const char __user *, path, char __user *, buf, int, bufsiz);
-COMPAT_SYSCALL_WRAP1(uselib, const char __user *, library);
-COMPAT_SYSCALL_WRAP2(swapon, const char __user *, specialfile, int, swap_flags);
-COMPAT_SYSCALL_WRAP4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg);
-COMPAT_SYSCALL_WRAP2(munmap, unsigned long, addr, size_t, len);
-COMPAT_SYSCALL_WRAP3(syslog, int, type, char __user *, buf, int, len);
-COMPAT_SYSCALL_WRAP1(swapoff, const char __user *, specialfile);
-COMPAT_SYSCALL_WRAP2(setdomainname, char __user *, name, int, len);
-COMPAT_SYSCALL_WRAP1(newuname, struct new_utsname __user *, name);
-COMPAT_SYSCALL_WRAP3(mprotect, unsigned long, start, size_t, len, unsigned long, prot);
-COMPAT_SYSCALL_WRAP3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs);
-COMPAT_SYSCALL_WRAP2(delete_module, const char __user *, name_user, unsigned int, flags);
-COMPAT_SYSCALL_WRAP4(quotactl, unsigned int, cmd, const char __user *, special, qid_t, id, void __user *, addr);
-COMPAT_SYSCALL_WRAP2(bdflush, int, func, long, data);
-COMPAT_SYSCALL_WRAP3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2);
-COMPAT_SYSCALL_WRAP5(llseek, unsigned int, fd, unsigned long, high, unsigned long, low, loff_t __user *, result, unsigned int, whence);
-COMPAT_SYSCALL_WRAP3(msync, unsigned long, start, size_t, len, int, flags);
-COMPAT_SYSCALL_WRAP2(mlock, unsigned long, start, size_t, len);
-COMPAT_SYSCALL_WRAP2(munlock, unsigned long, start, size_t, len);
-COMPAT_SYSCALL_WRAP2(sched_setparam, pid_t, pid, struct sched_param __user *, param);
-COMPAT_SYSCALL_WRAP2(sched_getparam, pid_t, pid, struct sched_param __user *, param);
-COMPAT_SYSCALL_WRAP3(sched_setscheduler, pid_t, pid, int, policy, struct sched_param __user *, param);
-COMPAT_SYSCALL_WRAP5(mremap, unsigned long, addr, unsigned long, old_len, unsigned long, new_len, unsigned long, flags, unsigned long, new_addr);
-COMPAT_SYSCALL_WRAP3(poll, struct pollfd __user *, ufds, unsigned int, nfds, int, timeout);
-COMPAT_SYSCALL_WRAP5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, unsigned long, arg4, unsigned long, arg5);
-COMPAT_SYSCALL_WRAP2(getcwd, char __user *, buf, unsigned long, size);
-COMPAT_SYSCALL_WRAP2(capget, cap_user_header_t, header, cap_user_data_t, dataptr);
-COMPAT_SYSCALL_WRAP2(capset, cap_user_header_t, header, const cap_user_data_t, data);
-COMPAT_SYSCALL_WRAP3(lchown, const char __user *, filename, uid_t, user, gid_t, group);
-COMPAT_SYSCALL_WRAP2(getgroups, int, gidsetsize, gid_t __user *, grouplist);
-COMPAT_SYSCALL_WRAP2(setgroups, int, gidsetsize, gid_t __user *, grouplist);
-COMPAT_SYSCALL_WRAP3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid);
-COMPAT_SYSCALL_WRAP3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid);
-COMPAT_SYSCALL_WRAP3(chown, const char __user *, filename, uid_t, user, gid_t, group);
-COMPAT_SYSCALL_WRAP2(pivot_root, const char __user *, new_root, const char __user *, put_old);
-COMPAT_SYSCALL_WRAP3(mincore, unsigned long, start, size_t, len, unsigned char __user *, vec);
-COMPAT_SYSCALL_WRAP3(madvise, unsigned long, start, size_t, len, int, behavior);
-COMPAT_SYSCALL_WRAP5(setxattr, const char __user *, path, const char __user *, name, const void __user *, value, size_t, size, int, flags);
-COMPAT_SYSCALL_WRAP5(lsetxattr, const char __user *, path, const char __user *, name, const void __user *, value, size_t, size, int, flags);
-COMPAT_SYSCALL_WRAP5(fsetxattr, int, fd, const char __user *, name, const void __user *, value, size_t, size, int, flags);
-COMPAT_SYSCALL_WRAP3(getdents64, unsigned int, fd, struct linux_dirent64 __user *, dirent, unsigned int, count);
-COMPAT_SYSCALL_WRAP4(getxattr, const char __user *, path, const char __user *, name, void __user *, value, size_t, size);
-COMPAT_SYSCALL_WRAP4(lgetxattr, const char __user *, path, const char __user *, name, void __user *, value, size_t, size);
-COMPAT_SYSCALL_WRAP4(fgetxattr, int, fd, const char __user *, name, void __user *, value, size_t, size);
-COMPAT_SYSCALL_WRAP3(listxattr, const char __user *, path, char __user *, list, size_t, size);
-COMPAT_SYSCALL_WRAP3(llistxattr, const char __user *, path, char __user *, list, size_t, size);
-COMPAT_SYSCALL_WRAP3(flistxattr, int, fd, char __user *, list, size_t, size);
-COMPAT_SYSCALL_WRAP2(removexattr, const char __user *, path, const char __user *, name);
-COMPAT_SYSCALL_WRAP2(lremovexattr, const char __user *, path, const char __user *, name);
-COMPAT_SYSCALL_WRAP2(fremovexattr, int, fd, const char __user *, name);
-COMPAT_SYSCALL_WRAP1(set_tid_address, int __user *, tidptr);
-COMPAT_SYSCALL_WRAP4(epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event __user *, event);
-COMPAT_SYSCALL_WRAP4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout);
-COMPAT_SYSCALL_WRAP1(io_destroy, aio_context_t, ctx);
-COMPAT_SYSCALL_WRAP3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result);
-COMPAT_SYSCALL_WRAP1(mq_unlink, const char __user *, name);
-COMPAT_SYSCALL_WRAP5(add_key, const char __user *, tp, const char __user *, dsc, const void __user *, pld, size_t, len, key_serial_t, id);
-COMPAT_SYSCALL_WRAP4(request_key, const char __user *, tp, const char __user *, dsc, const char __user *, info, key_serial_t, id);
-COMPAT_SYSCALL_WRAP5(remap_file_pages, unsigned long, start, unsigned long, size, unsigned long, prot, unsigned long, pgoff, unsigned long, flags);
-COMPAT_SYSCALL_WRAP3(inotify_add_watch, int, fd, const char __user *, path, u32, mask);
-COMPAT_SYSCALL_WRAP3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode);
-COMPAT_SYSCALL_WRAP4(mknodat, int, dfd, const char __user *, filename, umode_t, mode, unsigned, dev);
-COMPAT_SYSCALL_WRAP5(fchownat, int, dfd, const char __user *, filename, uid_t, user, gid_t, group, int, flag);
-COMPAT_SYSCALL_WRAP3(unlinkat, int, dfd, const char __user *, pathname, int, flag);
-COMPAT_SYSCALL_WRAP4(renameat, int, olddfd, const char __user *, oldname, int, newdfd, const char __user *, newname);
-COMPAT_SYSCALL_WRAP5(linkat, int, olddfd, const char __user *, oldname, int, newdfd, const char __user *, newname, int, flags);
-COMPAT_SYSCALL_WRAP3(symlinkat, const char __user *, oldname, int, newdfd, const char __user *, newname);
-COMPAT_SYSCALL_WRAP4(readlinkat, int, dfd, const char __user *, path, char __user *, buf, int, bufsiz);
-COMPAT_SYSCALL_WRAP3(fchmodat, int, dfd, const char __user *, filename, umode_t, mode);
-COMPAT_SYSCALL_WRAP3(faccessat, int, dfd, const char __user *, filename, int, mode);
-COMPAT_SYSCALL_WRAP1(unshare, unsigned long, unshare_flags);
-COMPAT_SYSCALL_WRAP6(splice, int, fd_in, loff_t __user *, off_in, int, fd_out, loff_t __user *, off_out, size_t, len, unsigned int, flags);
-COMPAT_SYSCALL_WRAP4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags);
-COMPAT_SYSCALL_WRAP3(getcpu, unsigned __user *, cpu, unsigned __user *, node, struct getcpu_cache __user *, cache);
-COMPAT_SYSCALL_WRAP2(pipe2, int __user *, fildes, int, flags);
-COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, unsigned long, flags);
-COMPAT_SYSCALL_WRAP5(clone, unsigned long, newsp, unsigned long, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, unsigned long, tls);
-COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim);
-COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag);
-COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, unsigned long, idx1, unsigned long, idx2);
-COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags);
-COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags);
-COMPAT_SYSCALL_WRAP4(sched_getattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, size, unsigned int, flags);
-COMPAT_SYSCALL_WRAP5(renameat2, int, olddfd, const char __user *, oldname, int, newdfd, const char __user *, newname, unsigned int, flags);
-COMPAT_SYSCALL_WRAP3(seccomp, unsigned int, op, unsigned int, flags, void __user *, uargs)
-COMPAT_SYSCALL_WRAP3(getrandom, char __user *, buf, size_t, count, unsigned int, flags)
-COMPAT_SYSCALL_WRAP2(memfd_create, const char __user *, uname, unsigned int, flags)
-COMPAT_SYSCALL_WRAP3(bpf, int, cmd, union bpf_attr *, attr, unsigned int, size);
-COMPAT_SYSCALL_WRAP3(s390_pci_mmio_write, const unsigned long, mmio_addr, const void __user *, user_buffer, const size_t, length);
-COMPAT_SYSCALL_WRAP3(s390_pci_mmio_read, const unsigned long, mmio_addr, void __user *, user_buffer, const size_t, length);
-COMPAT_SYSCALL_WRAP4(socketpair, int, family, int, type, int, protocol, int __user *, usockvec);
-COMPAT_SYSCALL_WRAP3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen);
-COMPAT_SYSCALL_WRAP3(connect, int, fd, struct sockaddr __user *, uservaddr, int, addrlen);
-COMPAT_SYSCALL_WRAP4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, int __user *, upeer_addrlen, int, flags);
-COMPAT_SYSCALL_WRAP3(getsockname, int, fd, struct sockaddr __user *, usockaddr, int __user *, usockaddr_len);
-COMPAT_SYSCALL_WRAP3(getpeername, int, fd, struct sockaddr __user *, usockaddr, int __user *, usockaddr_len);
-COMPAT_SYSCALL_WRAP6(sendto, int, fd, void __user *, buff, size_t, len, unsigned int, flags, struct sockaddr __user *, addr, int, addr_len);
-COMPAT_SYSCALL_WRAP3(mlock2, unsigned long, start, size_t, len, int, flags);
-COMPAT_SYSCALL_WRAP6(copy_file_range, int, fd_in, loff_t __user *, off_in, int, fd_out, loff_t __user *, off_out, size_t, len, unsigned int, flags);
-COMPAT_SYSCALL_WRAP2(s390_guarded_storage, int, command, struct gs_cb *, gs_cb);
-COMPAT_SYSCALL_WRAP5(statx, int, dfd, const char __user *, path, unsigned, flags, unsigned, mask, struct statx __user *, buffer);
-COMPAT_SYSCALL_WRAP4(s390_sthyi, unsigned long, code, void __user *, info, u64 __user *, rc, unsigned long, flags);
-COMPAT_SYSCALL_WRAP5(kexec_file_load, int, kernel_fd, int, initrd_fd, unsigned long, cmdline_len, const char __user *, cmdline_ptr, unsigned long, flags)
-COMPAT_SYSCALL_WRAP4(rseq, struct rseq __user *, rseq, u32, rseq_len, int, flags, u32, sig)
index 39191a0feed1cdedd692e68826b3b19db581cbbb..583d65ef5007a1de02bd61f09e7e22d5658826f3 100644 (file)
@@ -1512,7 +1512,7 @@ cleanup_critical:
        .quad   .Lsie_skip - .Lsie_entry
 #endif
        .section .rodata, "a"
-#define SYSCALL(esame,emu)     .long esame
+#define SYSCALL(esame,emu)     .long __s390x_ ## esame
        .globl  sys_call_table
 sys_call_table:
 #include "asm/syscall_table.h"
@@ -1520,7 +1520,7 @@ sys_call_table:
 
 #ifdef CONFIG_COMPAT
 
-#define SYSCALL(esame,emu)     .long emu
+#define SYSCALL(esame,emu)     .long __s390_ ## emu
        .globl  sys_call_table_emu
 sys_call_table_emu:
 #include "asm/syscall_table.h"
index 31cefe0c28c0ed4b3603568213eb194239b75272..202fa73ac1677d1a04d381519c2b046fcfb4c326 100644 (file)
@@ -58,6 +58,7 @@ out:
        return error;
 }
 
+#ifdef CONFIG_SYSVIPC
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls.
  */
@@ -74,19 +75,28 @@ SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, unsigned long, second,
         * Therefore we can call the generic variant by simply passing the
         * third parameter also as fifth parameter.
         */
-       return sys_ipc(call, first, second, third, ptr, third);
+       return ksys_ipc(call, first, second, third, ptr, third);
 }
+#endif /* CONFIG_SYSVIPC */
 
 SYSCALL_DEFINE1(s390_personality, unsigned int, personality)
 {
-       unsigned int ret;
+       unsigned int ret = current->personality;
 
        if (personality(current->personality) == PER_LINUX32 &&
            personality(personality) == PER_LINUX)
                personality |= PER_LINUX32;
-       ret = sys_personality(personality);
+
+       if (personality != 0xffffffff)
+               set_personality(personality);
+
        if (personality(ret) == PER_LINUX32)
                ret &= ~PER_LINUX32;
 
        return ret;
 }
+
+SYSCALL_DEFINE0(ni_syscall)
+{
+       return -ENOSYS;
+}
index 022fc099b628292e3c9daeecb2eb18ac54816935..620e222003cacbbf6c582d513d24a7ed304715c3 100644 (file)
 5    common    open                    sys_open                        compat_sys_open
 6    common    close                   sys_close                       sys_close
 7    common    restart_syscall         sys_restart_syscall             sys_restart_syscall
-8    common    creat                   sys_creat                       compat_sys_creat
-9    common    link                    sys_link                        compat_sys_link
-10   common    unlink                  sys_unlink                      compat_sys_unlink
+8    common    creat                   sys_creat                       sys_creat
+9    common    link                    sys_link                        sys_link
+10   common    unlink                  sys_unlink                      sys_unlink
 11   common    execve                  sys_execve                      compat_sys_execve
-12   common    chdir                   sys_chdir                       compat_sys_chdir
+12   common    chdir                   sys_chdir                       sys_chdir
 13   32                time                    -                               compat_sys_time
-14   common    mknod                   sys_mknod                       compat_sys_mknod
-15   common    chmod                   sys_chmod                       compat_sys_chmod
-16   32                lchown                  -                               compat_sys_s390_lchown16
+14   common    mknod                   sys_mknod                       sys_mknod
+15   common    chmod                   sys_chmod                       sys_chmod
+16   32                lchown                  -                               sys_lchown16
 19   common    lseek                   sys_lseek                       compat_sys_lseek
 20   common    getpid                  sys_getpid                      sys_getpid
 21   common    mount                   sys_mount                       compat_sys_mount
-22   common    umount                  sys_oldumount                   compat_sys_oldumount
-23   32                setuid                  -                               compat_sys_s390_setuid16
-24   32                getuid                  -                               compat_sys_s390_getuid16
+22   common    umount                  sys_oldumount                   sys_oldumount
+23   32                setuid                  -                               sys_setuid16
+24   32                getuid                  -                               sys_getuid16
 25   32                stime                   -                               compat_sys_stime
 26   common    ptrace                  sys_ptrace                      compat_sys_ptrace
 27   common    alarm                   sys_alarm                       sys_alarm
 29   common    pause                   sys_pause                       sys_pause
 30   common    utime                   sys_utime                       compat_sys_utime
-33   common    access                  sys_access                      compat_sys_access
+33   common    access                  sys_access                      sys_access
 34   common    nice                    sys_nice                        sys_nice
 36   common    sync                    sys_sync                        sys_sync
 37   common    kill                    sys_kill                        sys_kill
-38   common    rename                  sys_rename                      compat_sys_rename
-39   common    mkdir                   sys_mkdir                       compat_sys_mkdir
-40   common    rmdir                   sys_rmdir                       compat_sys_rmdir
+38   common    rename                  sys_rename                      sys_rename
+39   common    mkdir                   sys_mkdir                       sys_mkdir
+40   common    rmdir                   sys_rmdir                       sys_rmdir
 41   common    dup                     sys_dup                         sys_dup
-42   common    pipe                    sys_pipe                        compat_sys_pipe
+42   common    pipe                    sys_pipe                        sys_pipe
 43   common    times                   sys_times                       compat_sys_times
-45   common    brk                     sys_brk                         compat_sys_brk
-46   32                setgid                  -                               compat_sys_s390_setgid16
-47   32                getgid                  -                               compat_sys_s390_getgid16
-48   common    signal                  sys_signal                      compat_sys_signal
-49   32                geteuid                 -                               compat_sys_s390_geteuid16
-50   32                getegid                 -                               compat_sys_s390_getegid16
-51   common    acct                    sys_acct                        compat_sys_acct
-52   common    umount2                 sys_umount                      compat_sys_umount
+45   common    brk                     sys_brk                         sys_brk
+46   32                setgid                  -                               sys_setgid16
+47   32                getgid                  -                               sys_getgid16
+48   common    signal                  sys_signal                      sys_signal
+49   32                geteuid                 -                               sys_geteuid16
+50   32                getegid                 -                               sys_getegid16
+51   common    acct                    sys_acct                        sys_acct
+52   common    umount2                 sys_umount                      sys_umount
 54   common    ioctl                   sys_ioctl                       compat_sys_ioctl
 55   common    fcntl                   sys_fcntl                       compat_sys_fcntl
 57   common    setpgid                 sys_setpgid                     sys_setpgid
 60   common    umask                   sys_umask                       sys_umask
-61   common    chroot                  sys_chroot                      compat_sys_chroot
+61   common    chroot                  sys_chroot                      sys_chroot
 62   common    ustat                   sys_ustat                       compat_sys_ustat
 63   common    dup2                    sys_dup2                        sys_dup2
 64   common    getppid                 sys_getppid                     sys_getppid
 65   common    getpgrp                 sys_getpgrp                     sys_getpgrp
 66   common    setsid                  sys_setsid                      sys_setsid
 67   common    sigaction               sys_sigaction                   compat_sys_sigaction
-70   32                setreuid                -                               compat_sys_s390_setreuid16
-71   32                setregid                -                               compat_sys_s390_setregid16
-72   common    sigsuspend              sys_sigsuspend                  compat_sys_sigsuspend
+70   32                setreuid                -                               sys_setreuid16
+71   32                setregid                -                               sys_setregid16
+72   common    sigsuspend              sys_sigsuspend                  sys_sigsuspend
 73   common    sigpending              sys_sigpending                  compat_sys_sigpending
-74   common    sethostname             sys_sethostname                 compat_sys_sethostname
+74   common    sethostname             sys_sethostname                 sys_sethostname
 75   common    setrlimit               sys_setrlimit                   compat_sys_setrlimit
 76   32                getrlimit               -                               compat_sys_old_getrlimit
 77   common    getrusage               sys_getrusage                   compat_sys_getrusage
 78   common    gettimeofday            sys_gettimeofday                compat_sys_gettimeofday
 79   common    settimeofday            sys_settimeofday                compat_sys_settimeofday
-80   32                getgroups               -                               compat_sys_s390_getgroups16
-81   32                setgroups               -                               compat_sys_s390_setgroups16
-83   common    symlink                 sys_symlink                     compat_sys_symlink
-85   common    readlink                sys_readlink                    compat_sys_readlink
-86   common    uselib                  sys_uselib                      compat_sys_uselib
-87   common    swapon                  sys_swapon                      compat_sys_swapon
-88   common    reboot                  sys_reboot                      compat_sys_reboot
+80   32                getgroups               -                               sys_getgroups16
+81   32                setgroups               -                               sys_setgroups16
+83   common    symlink                 sys_symlink                     sys_symlink
+85   common    readlink                sys_readlink                    sys_readlink
+86   common    uselib                  sys_uselib                      sys_uselib
+87   common    swapon                  sys_swapon                      sys_swapon
+88   common    reboot                  sys_reboot                      sys_reboot
 89   common    readdir                 -                               compat_sys_old_readdir
 90   common    mmap                    sys_old_mmap                    compat_sys_s390_old_mmap
-91   common    munmap                  sys_munmap                      compat_sys_munmap
+91   common    munmap                  sys_munmap                      sys_munmap
 92   common    truncate                sys_truncate                    compat_sys_truncate
 93   common    ftruncate               sys_ftruncate                   compat_sys_ftruncate
 94   common    fchmod                  sys_fchmod                      sys_fchmod
-95   32                fchown                  -                               compat_sys_s390_fchown16
+95   32                fchown                  -                               sys_fchown16
 96   common    getpriority             sys_getpriority                 sys_getpriority
 97   common    setpriority             sys_setpriority                 sys_setpriority
 99   common    statfs                  sys_statfs                      compat_sys_statfs
 100  common    fstatfs                 sys_fstatfs                     compat_sys_fstatfs
 101  32                ioperm                  -                               -
 102  common    socketcall              sys_socketcall                  compat_sys_socketcall
-103  common    syslog                  sys_syslog                      compat_sys_syslog
+103  common    syslog                  sys_syslog                      sys_syslog
 104  common    setitimer               sys_setitimer                   compat_sys_setitimer
 105  common    getitimer               sys_getitimer                   compat_sys_getitimer
 106  common    stat                    sys_newstat                     compat_sys_newstat
 111  common    vhangup                 sys_vhangup                     sys_vhangup
 112  common    idle                    -                               -
 114  common    wait4                   sys_wait4                       compat_sys_wait4
-115  common    swapoff                 sys_swapoff                     compat_sys_swapoff
+115  common    swapoff                 sys_swapoff                     sys_swapoff
 116  common    sysinfo                 sys_sysinfo                     compat_sys_sysinfo
 117  common    ipc                     sys_s390_ipc                    compat_sys_s390_ipc
 118  common    fsync                   sys_fsync                       sys_fsync
 119  common    sigreturn               sys_sigreturn                   compat_sys_sigreturn
-120  common    clone                   sys_clone                       compat_sys_clone
-121  common    setdomainname           sys_setdomainname               compat_sys_setdomainname
-122  common    uname                   sys_newuname                    compat_sys_newuname
+120  common    clone                   sys_clone                       sys_clone
+121  common    setdomainname           sys_setdomainname               sys_setdomainname
+122  common    uname                   sys_newuname                    sys_newuname
 124  common    adjtimex                sys_adjtimex                    compat_sys_adjtimex
-125  common    mprotect                sys_mprotect                    compat_sys_mprotect
+125  common    mprotect                sys_mprotect                    sys_mprotect
 126  common    sigprocmask             sys_sigprocmask                 compat_sys_sigprocmask
 127  common    create_module           -                               -
-128  common    init_module             sys_init_module                 compat_sys_init_module
-129  common    delete_module           sys_delete_module               compat_sys_delete_module
+128  common    init_module             sys_init_module                 sys_init_module
+129  common    delete_module           sys_delete_module               sys_delete_module
 130  common    get_kernel_syms         -                               -
-131  common    quotactl                sys_quotactl                    compat_sys_quotactl
+131  common    quotactl                sys_quotactl                    sys_quotactl
 132  common    getpgid                 sys_getpgid                     sys_getpgid
 133  common    fchdir                  sys_fchdir                      sys_fchdir
-134  common    bdflush                 sys_bdflush                     compat_sys_bdflush
-135  common    sysfs                   sys_sysfs                       compat_sys_sysfs
+134  common    bdflush                 sys_bdflush                     sys_bdflush
+135  common    sysfs                   sys_sysfs                       sys_sysfs
 136  common    personality             sys_s390_personality            sys_s390_personality
 137  common    afs_syscall             -                               -
-138  32                setfsuid                -                               compat_sys_s390_setfsuid16
-139  32                setfsgid                -                               compat_sys_s390_setfsgid16
-140  32                _llseek                 -                               compat_sys_llseek
+138  32                setfsuid                -                               sys_setfsuid16
+139  32                setfsgid                -                               sys_setfsgid16
+140  32                _llseek                 -                               sys_llseek
 141  common    getdents                sys_getdents                    compat_sys_getdents
 142  32                _newselect              -                               compat_sys_select
 142  64                select                  sys_select                      -
 143  common    flock                   sys_flock                       sys_flock
-144  common    msync                   sys_msync                       compat_sys_msync
+144  common    msync                   sys_msync                       sys_msync
 145  common    readv                   sys_readv                       compat_sys_readv
 146  common    writev                  sys_writev                      compat_sys_writev
 147  common    getsid                  sys_getsid                      sys_getsid
 148  common    fdatasync               sys_fdatasync                   sys_fdatasync
 149  common    _sysctl                 sys_sysctl                      compat_sys_sysctl
-150  common    mlock                   sys_mlock                       compat_sys_mlock
-151  common    munlock                 sys_munlock                     compat_sys_munlock
+150  common    mlock                   sys_mlock                       sys_mlock
+151  common    munlock                 sys_munlock                     sys_munlock
 152  common    mlockall                sys_mlockall                    sys_mlockall
 153  common    munlockall              sys_munlockall                  sys_munlockall
-154  common    sched_setparam          sys_sched_setparam              compat_sys_sched_setparam
-155  common    sched_getparam          sys_sched_getparam              compat_sys_sched_getparam
-156  common    sched_setscheduler      sys_sched_setscheduler          compat_sys_sched_setscheduler
+154  common    sched_setparam          sys_sched_setparam              sys_sched_setparam
+155  common    sched_getparam          sys_sched_getparam              sys_sched_getparam
+156  common    sched_setscheduler      sys_sched_setscheduler          sys_sched_setscheduler
 157  common    sched_getscheduler      sys_sched_getscheduler          sys_sched_getscheduler
 158  common    sched_yield             sys_sched_yield                 sys_sched_yield
 159  common    sched_get_priority_max  sys_sched_get_priority_max      sys_sched_get_priority_max
 160  common    sched_get_priority_min  sys_sched_get_priority_min      sys_sched_get_priority_min
 161  common    sched_rr_get_interval   sys_sched_rr_get_interval       compat_sys_sched_rr_get_interval
 162  common    nanosleep               sys_nanosleep                   compat_sys_nanosleep
-163  common    mremap                  sys_mremap                      compat_sys_mremap
-164  32                setresuid               -                               compat_sys_s390_setresuid16
-165  32                getresuid               -                               compat_sys_s390_getresuid16
+163  common    mremap                  sys_mremap                      sys_mremap
+164  32                setresuid               -                               sys_setresuid16
+165  32                getresuid               -                               sys_getresuid16
 167  common    query_module            -                               -
-168  common    poll                    sys_poll                        compat_sys_poll
+168  common    poll                    sys_poll                        sys_poll
 169  common    nfsservctl              -                               -
-170  32                setresgid               -                               compat_sys_s390_setresgid16
-171  32                getresgid               -                               compat_sys_s390_getresgid16
-172  common    prctl                   sys_prctl                       compat_sys_prctl
+170  32                setresgid               -                               sys_setresgid16
+171  32                getresgid               -                               sys_getresgid16
+172  common    prctl                   sys_prctl                       sys_prctl
 173  common    rt_sigreturn            sys_rt_sigreturn                compat_sys_rt_sigreturn
 174  common    rt_sigaction            sys_rt_sigaction                compat_sys_rt_sigaction
 175  common    rt_sigprocmask          sys_rt_sigprocmask              compat_sys_rt_sigprocmask
 179  common    rt_sigsuspend           sys_rt_sigsuspend               compat_sys_rt_sigsuspend
 180  common    pread64                 sys_pread64                     compat_sys_s390_pread64
 181  common    pwrite64                sys_pwrite64                    compat_sys_s390_pwrite64
-182  32                chown                   -                               compat_sys_s390_chown16
-183  common    getcwd                  sys_getcwd                      compat_sys_getcwd
-184  common    capget                  sys_capget                      compat_sys_capget
-185  common    capset                  sys_capset                      compat_sys_capset
+182  32                chown                   -                               sys_chown16
+183  common    getcwd                  sys_getcwd                      sys_getcwd
+184  common    capget                  sys_capget                      sys_capget
+185  common    capset                  sys_capset                      sys_capset
 186  common    sigaltstack             sys_sigaltstack                 compat_sys_sigaltstack
 187  common    sendfile                sys_sendfile64                  compat_sys_sendfile
 188  common    getpmsg                 -                               -
 195  32                stat64                  -                               compat_sys_s390_stat64
 196  32                lstat64                 -                               compat_sys_s390_lstat64
 197  32                fstat64                 -                               compat_sys_s390_fstat64
-198  32                lchown32                -                               compat_sys_lchown
+198  32                lchown32                -                               sys_lchown
 198  64                lchown                  sys_lchown                      -
 199  32                getuid32                -                               sys_getuid
 199  64                getuid                  sys_getuid                      -
 203  64                setreuid                sys_setreuid                    -
 204  32                setregid32              -                               sys_setregid
 204  64                setregid                sys_setregid                    -
-205  32                getgroups32             -                               compat_sys_getgroups
+205  32                getgroups32             -                               sys_getgroups
 205  64                getgroups               sys_getgroups                   -
-206  32                setgroups32             -                               compat_sys_setgroups
+206  32                setgroups32             -                               sys_setgroups
 206  64                setgroups               sys_setgroups                   -
 207  32                fchown32                -                               sys_fchown
 207  64                fchown                  sys_fchown                      -
 208  32                setresuid32             -                               sys_setresuid
 208  64                setresuid               sys_setresuid                   -
-209  32                getresuid32             -                               compat_sys_getresuid
+209  32                getresuid32             -                               sys_getresuid
 209  64                getresuid               sys_getresuid                   -
 210  32                setresgid32             -                               sys_setresgid
 210  64                setresgid               sys_setresgid                   -
-211  32                getresgid32             -                               compat_sys_getresgid
+211  32                getresgid32             -                               sys_getresgid
 211  64                getresgid               sys_getresgid                   -
-212  32                chown32                 -                               compat_sys_chown
+212  32                chown32                 -                               sys_chown
 212  64                chown                   sys_chown                       -
 213  32                setuid32                -                               sys_setuid
 213  64                setuid                  sys_setuid                      -
 215  64                setfsuid                sys_setfsuid                    -
 216  32                setfsgid32              -                               sys_setfsgid
 216  64                setfsgid                sys_setfsgid                    -
-217  common    pivot_root              sys_pivot_root                  compat_sys_pivot_root
-218  common    mincore                 sys_mincore                     compat_sys_mincore
-219  common    madvise                 sys_madvise                     compat_sys_madvise
-220  common    getdents64              sys_getdents64                  compat_sys_getdents64
+217  common    pivot_root              sys_pivot_root                  sys_pivot_root
+218  common    mincore                 sys_mincore                     sys_mincore
+219  common    madvise                 sys_madvise                     sys_madvise
+220  common    getdents64              sys_getdents64                  sys_getdents64
 221  32                fcntl64                 -                               compat_sys_fcntl64
 222  common    readahead               sys_readahead                   compat_sys_s390_readahead
 223  32                sendfile64              -                               compat_sys_sendfile64
-224  common    setxattr                sys_setxattr                    compat_sys_setxattr
-225  common    lsetxattr               sys_lsetxattr                   compat_sys_lsetxattr
-226  common    fsetxattr               sys_fsetxattr                   compat_sys_fsetxattr
-227  common    getxattr                sys_getxattr                    compat_sys_getxattr
-228  common    lgetxattr               sys_lgetxattr                   compat_sys_lgetxattr
-229  common    fgetxattr               sys_fgetxattr                   compat_sys_fgetxattr
-230  common    listxattr               sys_listxattr                   compat_sys_listxattr
-231  common    llistxattr              sys_llistxattr                  compat_sys_llistxattr
-232  common    flistxattr              sys_flistxattr                  compat_sys_flistxattr
-233  common    removexattr             sys_removexattr                 compat_sys_removexattr
-234  common    lremovexattr            sys_lremovexattr                compat_sys_lremovexattr
-235  common    fremovexattr            sys_fremovexattr                compat_sys_fremovexattr
+224  common    setxattr                sys_setxattr                    sys_setxattr
+225  common    lsetxattr               sys_lsetxattr                   sys_lsetxattr
+226  common    fsetxattr               sys_fsetxattr                   sys_fsetxattr
+227  common    getxattr                sys_getxattr                    sys_getxattr
+228  common    lgetxattr               sys_lgetxattr                   sys_lgetxattr
+229  common    fgetxattr               sys_fgetxattr                   sys_fgetxattr
+230  common    listxattr               sys_listxattr                   sys_listxattr
+231  common    llistxattr              sys_llistxattr                  sys_llistxattr
+232  common    flistxattr              sys_flistxattr                  sys_flistxattr
+233  common    removexattr             sys_removexattr                 sys_removexattr
+234  common    lremovexattr            sys_lremovexattr                sys_lremovexattr
+235  common    fremovexattr            sys_fremovexattr                sys_fremovexattr
 236  common    gettid                  sys_gettid                      sys_gettid
 237  common    tkill                   sys_tkill                       sys_tkill
 238  common    futex                   sys_futex                       compat_sys_futex
 240  common    sched_getaffinity       sys_sched_getaffinity           compat_sys_sched_getaffinity
 241  common    tgkill                  sys_tgkill                      sys_tgkill
 243  common    io_setup                sys_io_setup                    compat_sys_io_setup
-244  common    io_destroy              sys_io_destroy                  compat_sys_io_destroy
+244  common    io_destroy              sys_io_destroy                  sys_io_destroy
 245  common    io_getevents            sys_io_getevents                compat_sys_io_getevents
 246  common    io_submit               sys_io_submit                   compat_sys_io_submit
-247  common    io_cancel               sys_io_cancel                   compat_sys_io_cancel
+247  common    io_cancel               sys_io_cancel                   sys_io_cancel
 248  common    exit_group              sys_exit_group                  sys_exit_group
 249  common    epoll_create            sys_epoll_create                sys_epoll_create
-250  common    epoll_ctl               sys_epoll_ctl                   compat_sys_epoll_ctl
-251  common    epoll_wait              sys_epoll_wait                  compat_sys_epoll_wait
-252  common    set_tid_address         sys_set_tid_address             compat_sys_set_tid_address
+250  common    epoll_ctl               sys_epoll_ctl                   sys_epoll_ctl
+251  common    epoll_wait              sys_epoll_wait                  sys_epoll_wait
+252  common    set_tid_address         sys_set_tid_address             sys_set_tid_address
 253  common    fadvise64               sys_fadvise64_64                compat_sys_s390_fadvise64
 254  common    timer_create            sys_timer_create                compat_sys_timer_create
 255  common    timer_settime           sys_timer_settime               compat_sys_timer_settime
 264  32                fadvise64_64            -                               compat_sys_s390_fadvise64_64
 265  common    statfs64                sys_statfs64                    compat_sys_statfs64
 266  common    fstatfs64               sys_fstatfs64                   compat_sys_fstatfs64
-267  common    remap_file_pages        sys_remap_file_pages            compat_sys_remap_file_pages
+267  common    remap_file_pages        sys_remap_file_pages            sys_remap_file_pages
 268  common    mbind                   sys_mbind                       compat_sys_mbind
 269  common    get_mempolicy           sys_get_mempolicy               compat_sys_get_mempolicy
 270  common    set_mempolicy           sys_set_mempolicy               compat_sys_set_mempolicy
 271  common    mq_open                 sys_mq_open                     compat_sys_mq_open
-272  common    mq_unlink               sys_mq_unlink                   compat_sys_mq_unlink
+272  common    mq_unlink               sys_mq_unlink                   sys_mq_unlink
 273  common    mq_timedsend            sys_mq_timedsend                compat_sys_mq_timedsend
 274  common    mq_timedreceive         sys_mq_timedreceive             compat_sys_mq_timedreceive
 275  common    mq_notify               sys_mq_notify                   compat_sys_mq_notify
 276  common    mq_getsetattr           sys_mq_getsetattr               compat_sys_mq_getsetattr
 277  common    kexec_load              sys_kexec_load                  compat_sys_kexec_load
-278  common    add_key                 sys_add_key                     compat_sys_add_key
-279  common    request_key             sys_request_key                 compat_sys_request_key
+278  common    add_key                 sys_add_key                     sys_add_key
+279  common    request_key             sys_request_key                 sys_request_key
 280  common    keyctl                  sys_keyctl                      compat_sys_keyctl
 281  common    waitid                  sys_waitid                      compat_sys_waitid
 282  common    ioprio_set              sys_ioprio_set                  sys_ioprio_set
 283  common    ioprio_get              sys_ioprio_get                  sys_ioprio_get
 284  common    inotify_init            sys_inotify_init                sys_inotify_init
-285  common    inotify_add_watch       sys_inotify_add_watch           compat_sys_inotify_add_watch
+285  common    inotify_add_watch       sys_inotify_add_watch           sys_inotify_add_watch
 286  common    inotify_rm_watch        sys_inotify_rm_watch            sys_inotify_rm_watch
 287  common    migrate_pages           sys_migrate_pages               compat_sys_migrate_pages
 288  common    openat                  sys_openat                      compat_sys_openat
-289  common    mkdirat                 sys_mkdirat                     compat_sys_mkdirat
-290  common    mknodat                 sys_mknodat                     compat_sys_mknodat
-291  common    fchownat                sys_fchownat                    compat_sys_fchownat
+289  common    mkdirat                 sys_mkdirat                     sys_mkdirat
+290  common    mknodat                 sys_mknodat                     sys_mknodat
+291  common    fchownat                sys_fchownat                    sys_fchownat
 292  common    futimesat               sys_futimesat                   compat_sys_futimesat
 293  32                fstatat64               -                               compat_sys_s390_fstatat64
 293  64                newfstatat              sys_newfstatat                  -
-294  common    unlinkat                sys_unlinkat                    compat_sys_unlinkat
-295  common    renameat                sys_renameat                    compat_sys_renameat
-296  common    linkat                  sys_linkat                      compat_sys_linkat
-297  common    symlinkat               sys_symlinkat                   compat_sys_symlinkat
-298  common    readlinkat              sys_readlinkat                  compat_sys_readlinkat
-299  common    fchmodat                sys_fchmodat                    compat_sys_fchmodat
-300  common    faccessat               sys_faccessat                   compat_sys_faccessat
+294  common    unlinkat                sys_unlinkat                    sys_unlinkat
+295  common    renameat                sys_renameat                    sys_renameat
+296  common    linkat                  sys_linkat                      sys_linkat
+297  common    symlinkat               sys_symlinkat                   sys_symlinkat
+298  common    readlinkat              sys_readlinkat                  sys_readlinkat
+299  common    fchmodat                sys_fchmodat                    sys_fchmodat
+300  common    faccessat               sys_faccessat                   sys_faccessat
 301  common    pselect6                sys_pselect6                    compat_sys_pselect6
 302  common    ppoll                   sys_ppoll                       compat_sys_ppoll
-303  common    unshare                 sys_unshare                     compat_sys_unshare
+303  common    unshare                 sys_unshare                     sys_unshare
 304  common    set_robust_list         sys_set_robust_list             compat_sys_set_robust_list
 305  common    get_robust_list         sys_get_robust_list             compat_sys_get_robust_list
-306  common    splice                  sys_splice                      compat_sys_splice
+306  common    splice                  sys_splice                      sys_splice
 307  common    sync_file_range         sys_sync_file_range             compat_sys_s390_sync_file_range
-308  common    tee                     sys_tee                         compat_sys_tee
+308  common    tee                     sys_tee                         sys_tee
 309  common    vmsplice                sys_vmsplice                    compat_sys_vmsplice
 310  common    move_pages              sys_move_pages                  compat_sys_move_pages
-311  common    getcpu                  sys_getcpu                      compat_sys_getcpu
+311  common    getcpu                  sys_getcpu                      sys_getcpu
 312  common    epoll_pwait             sys_epoll_pwait                 compat_sys_epoll_pwait
 313  common    utimes                  sys_utimes                      compat_sys_utimes
 314  common    fallocate               sys_fallocate                   compat_sys_s390_fallocate
 322  common    signalfd4               sys_signalfd4                   compat_sys_signalfd4
 323  common    eventfd2                sys_eventfd2                    sys_eventfd2
 324  common    inotify_init1           sys_inotify_init1               sys_inotify_init1
-325  common    pipe2                   sys_pipe2                       compat_sys_pipe2
+325  common    pipe2                   sys_pipe2                       sys_pipe2
 326  common    dup3                    sys_dup3                        sys_dup3
 327  common    epoll_create1           sys_epoll_create1               sys_epoll_create1
 328  common    preadv                  sys_preadv                      compat_sys_preadv
 329  common    pwritev                 sys_pwritev                     compat_sys_pwritev
 330  common    rt_tgsigqueueinfo       sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
-331  common    perf_event_open         sys_perf_event_open             compat_sys_perf_event_open
+331  common    perf_event_open         sys_perf_event_open             sys_perf_event_open
 332  common    fanotify_init           sys_fanotify_init               sys_fanotify_init
 333  common    fanotify_mark           sys_fanotify_mark               compat_sys_fanotify_mark
-334  common    prlimit64               sys_prlimit64                   compat_sys_prlimit64
-335  common    name_to_handle_at       sys_name_to_handle_at           compat_sys_name_to_handle_at
+334  common    prlimit64               sys_prlimit64                   sys_prlimit64
+335  common    name_to_handle_at       sys_name_to_handle_at           sys_name_to_handle_at
 336  common    open_by_handle_at       sys_open_by_handle_at           compat_sys_open_by_handle_at
 337  common    clock_adjtime           sys_clock_adjtime               compat_sys_clock_adjtime
 338  common    syncfs                  sys_syncfs                      sys_syncfs
 340  common    process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
 341  common    process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
 342  common    s390_runtime_instr      sys_s390_runtime_instr          sys_s390_runtime_instr
-343  common    kcmp                    sys_kcmp                        compat_sys_kcmp
-344  common    finit_module            sys_finit_module                compat_sys_finit_module
-345  common    sched_setattr           sys_sched_setattr               compat_sys_sched_setattr
-346  common    sched_getattr           sys_sched_getattr               compat_sys_sched_getattr
-347  common    renameat2               sys_renameat2                   compat_sys_renameat2
-348  common    seccomp                 sys_seccomp                     compat_sys_seccomp
-349  common    getrandom               sys_getrandom                   compat_sys_getrandom
-350  common    memfd_create            sys_memfd_create                compat_sys_memfd_create
-351  common    bpf                     sys_bpf                         compat_sys_bpf
-352  common    s390_pci_mmio_write     sys_s390_pci_mmio_write         compat_sys_s390_pci_mmio_write
-353  common    s390_pci_mmio_read      sys_s390_pci_mmio_read          compat_sys_s390_pci_mmio_read
+343  common    kcmp                    sys_kcmp                        sys_kcmp
+344  common    finit_module            sys_finit_module                sys_finit_module
+345  common    sched_setattr           sys_sched_setattr               sys_sched_setattr
+346  common    sched_getattr           sys_sched_getattr               sys_sched_getattr
+347  common    renameat2               sys_renameat2                   sys_renameat2
+348  common    seccomp                 sys_seccomp                     sys_seccomp
+349  common    getrandom               sys_getrandom                   sys_getrandom
+350  common    memfd_create            sys_memfd_create                sys_memfd_create
+351  common    bpf                     sys_bpf                         sys_bpf
+352  common    s390_pci_mmio_write     sys_s390_pci_mmio_write         sys_s390_pci_mmio_write
+353  common    s390_pci_mmio_read      sys_s390_pci_mmio_read          sys_s390_pci_mmio_read
 354  common    execveat                sys_execveat                    compat_sys_execveat
 355  common    userfaultfd             sys_userfaultfd                 sys_userfaultfd
 356  common    membarrier              sys_membarrier                  sys_membarrier
 357  common    recvmmsg                sys_recvmmsg                    compat_sys_recvmmsg
 358  common    sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
 359  common    socket                  sys_socket                      sys_socket
-360  common    socketpair              sys_socketpair                  compat_sys_socketpair
-361  common    bind                    sys_bind                        compat_sys_bind
-362  common    connect                 sys_connect                     compat_sys_connect
+360  common    socketpair              sys_socketpair                  sys_socketpair
+361  common    bind                    sys_bind                        sys_bind
+362  common    connect                 sys_connect                     sys_connect
 363  common    listen                  sys_listen                      sys_listen
-364  common    accept4                 sys_accept4                     compat_sys_accept4
+364  common    accept4                 sys_accept4                     sys_accept4
 365  common    getsockopt              sys_getsockopt                  compat_sys_getsockopt
 366  common    setsockopt              sys_setsockopt                  compat_sys_setsockopt
-367  common    getsockname             sys_getsockname                 compat_sys_getsockname
-368  common    getpeername             sys_getpeername                 compat_sys_getpeername
-369  common    sendto                  sys_sendto                      compat_sys_sendto
+367  common    getsockname             sys_getsockname                 sys_getsockname
+368  common    getpeername             sys_getpeername                 sys_getpeername
+369  common    sendto                  sys_sendto                      sys_sendto
 370  common    sendmsg                 sys_sendmsg                     compat_sys_sendmsg
 371  common    recvfrom                sys_recvfrom                    compat_sys_recvfrom
 372  common    recvmsg                 sys_recvmsg                     compat_sys_recvmsg
 373  common    shutdown                sys_shutdown                    sys_shutdown
-374  common    mlock2                  sys_mlock2                      compat_sys_mlock2
-375  common    copy_file_range         sys_copy_file_range             compat_sys_copy_file_range
+374  common    mlock2                  sys_mlock2                      sys_mlock2
+375  common    copy_file_range         sys_copy_file_range             sys_copy_file_range
 376  common    preadv2                 sys_preadv2                     compat_sys_preadv2
 377  common    pwritev2                sys_pwritev2                    compat_sys_pwritev2
-378  common    s390_guarded_storage    sys_s390_guarded_storage        compat_sys_s390_guarded_storage
-379  common    statx                   sys_statx                       compat_sys_statx
-380  common    s390_sthyi              sys_s390_sthyi                  compat_sys_s390_sthyi
-381  common    kexec_file_load         sys_kexec_file_load             compat_sys_kexec_file_load
+378  common    s390_guarded_storage    sys_s390_guarded_storage        sys_s390_guarded_storage
+379  common    statx                   sys_statx                       sys_statx
+380  common    s390_sthyi              sys_s390_sthyi                  sys_s390_sthyi
+381  common    kexec_file_load         sys_kexec_file_load             sys_kexec_file_load
 382  common    io_pgetevents           sys_io_pgetevents               compat_sys_io_pgetevents
-383  common    rseq                    sys_rseq                        compat_sys_rseq
+383  common    rseq                    sys_rseq                        sys_rseq
+384  common    pkey_mprotect           sys_pkey_mprotect               sys_pkey_mprotect
+385  common    pkey_alloc              sys_pkey_alloc                  sys_pkey_alloc
+386  common    pkey_free               sys_pkey_free                   sys_pkey_free
+# room for arch specific syscalls
+392    64      semtimedop              sys_semtimedop                  -
+393  common    semget                  sys_semget                      sys_semget
+394  common    semctl                  sys_semctl                      compat_sys_semctl
+395  common    shmget                  sys_shmget                      sys_shmget
+396  common    shmctl                  sys_shmctl                      compat_sys_shmctl
+397  common    shmat                   sys_shmat                       compat_sys_shmat
+398  common    shmdt                   sys_shmdt                       sys_shmdt
+399  common    msgget                  sys_msgget                      sys_msgget
+400  common    msgsnd                  sys_msgsnd                      compat_sys_msgsnd
+401  common    msgrcv                  sys_msgrcv                      compat_sys_msgrcv
+402  common    msgctl                  sys_msgctl                      compat_sys_msgctl
diff --git a/arch/sh/include/uapi/asm/unistd_32.h b/arch/sh/include/uapi/asm/unistd_32.h
deleted file mode 100644 (file)
index 31c85aa..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __ASM_SH_UNISTD_32_H
-#define __ASM_SH_UNISTD_32_H
-
-/*
- * Copyright (C) 1999  Niibe Yutaka
- */
-
-/*
- * This file contains the system call numbers.
- */
-
-#define __NR_restart_syscall     0
-#define __NR_exit                1
-#define __NR_fork                2
-#define __NR_read                3
-#define __NR_write               4
-#define __NR_open                5
-#define __NR_close               6
-#define __NR_waitpid             7
-#define __NR_creat               8
-#define __NR_link                9
-#define __NR_unlink             10
-#define __NR_execve             11
-#define __NR_chdir              12
-#define __NR_time               13
-#define __NR_mknod              14
-#define __NR_chmod              15
-#define __NR_lchown             16
-                                /* 17 was sys_break */
-#define __NR_oldstat            18
-#define __NR_lseek              19
-#define __NR_getpid             20
-#define __NR_mount              21
-#define __NR_umount             22
-#define __NR_setuid             23
-#define __NR_getuid             24
-#define __NR_stime              25
-#define __NR_ptrace             26
-#define __NR_alarm              27
-#define __NR_oldfstat           28
-#define __NR_pause              29
-#define __NR_utime              30
-                                /* 31 was sys_stty */
-                                /* 32 was sys_gtty */
-#define __NR_access             33
-#define __NR_nice               34
-                                /* 35 was sys_ftime */
-#define __NR_sync               36
-#define __NR_kill               37
-#define __NR_rename             38
-#define __NR_mkdir              39
-#define __NR_rmdir              40
-#define __NR_dup                41
-#define __NR_pipe               42
-#define __NR_times              43
-                                /* 44 was sys_prof */
-#define __NR_brk                45
-#define __NR_setgid             46
-#define __NR_getgid             47
-#define __NR_signal             48
-#define __NR_geteuid            49
-#define __NR_getegid            50
-#define __NR_acct               51
-#define __NR_umount2            52
-                                /* 53 was sys_lock */
-#define __NR_ioctl              54
-#define __NR_fcntl              55
-                                /* 56 was sys_mpx */
-#define __NR_setpgid            57
-                                /* 58 was sys_ulimit */
-                                /* 59 was sys_olduname */
-#define __NR_umask              60
-#define __NR_chroot             61
-#define __NR_ustat              62
-#define __NR_dup2               63
-#define __NR_getppid            64
-#define __NR_getpgrp            65
-#define __NR_setsid             66
-#define __NR_sigaction          67
-#define __NR_sgetmask           68
-#define __NR_ssetmask           69
-#define __NR_setreuid           70
-#define __NR_setregid           71
-#define __NR_sigsuspend                 72
-#define __NR_sigpending                 73
-#define __NR_sethostname        74
-#define __NR_setrlimit          75
-#define __NR_getrlimit          76     /* Back compatible 2Gig limited rlimit */
-#define __NR_getrusage          77
-#define __NR_gettimeofday       78
-#define __NR_settimeofday       79
-#define __NR_getgroups          80
-#define __NR_setgroups          81
-                                /* 82 was sys_oldselect */
-#define __NR_symlink            83
-#define __NR_oldlstat           84
-#define __NR_readlink           85
-#define __NR_uselib             86
-#define __NR_swapon             87
-#define __NR_reboot             88
-#define __NR_readdir            89
-#define __NR_mmap               90
-#define __NR_munmap             91
-#define __NR_truncate           92
-#define __NR_ftruncate          93
-#define __NR_fchmod             94
-#define __NR_fchown             95
-#define __NR_getpriority        96
-#define __NR_setpriority        97
-                                /* 98 was sys_profil */
-#define __NR_statfs             99
-#define __NR_fstatfs           100
-                               /* 101 was sys_ioperm */
-#define __NR_socketcall                102
-#define __NR_syslog            103
-#define __NR_setitimer         104
-#define __NR_getitimer         105
-#define __NR_stat              106
-#define __NR_lstat             107
-#define __NR_fstat             108
-#define __NR_olduname          109
-                               /* 110 was sys_iopl */
-#define __NR_vhangup           111
-                               /* 112 was sys_idle */
-                               /* 113 was sys_vm86old */
-#define __NR_wait4             114
-#define __NR_swapoff           115
-#define __NR_sysinfo           116
-#define __NR_ipc               117
-#define __NR_fsync             118
-#define __NR_sigreturn         119
-#define __NR_clone             120
-#define __NR_setdomainname     121
-#define __NR_uname             122
-#define __NR_cacheflush                123
-#define __NR_adjtimex          124
-#define __NR_mprotect          125
-#define __NR_sigprocmask       126
-                               /* 127 was sys_create_module */
-#define __NR_init_module       128
-#define __NR_delete_module     129
-                               /* 130 was sys_get_kernel_syms */
-#define __NR_quotactl          131
-#define __NR_getpgid           132
-#define __NR_fchdir            133
-#define __NR_bdflush           134
-#define __NR_sysfs             135
-#define __NR_personality       136
-                               /* 137 was sys_afs_syscall */
-#define __NR_setfsuid          138
-#define __NR_setfsgid          139
-#define __NR__llseek           140
-#define __NR_getdents          141
-#define __NR__newselect                142
-#define __NR_flock             143
-#define __NR_msync             144
-#define __NR_readv             145
-#define __NR_writev            146
-#define __NR_getsid            147
-#define __NR_fdatasync         148
-#define __NR__sysctl           149
-#define __NR_mlock             150
-#define __NR_munlock           151
-#define __NR_mlockall          152
-#define __NR_munlockall                153
-#define __NR_sched_setparam            154
-#define __NR_sched_getparam            155
-#define __NR_sched_setscheduler                156
-#define __NR_sched_getscheduler                157
-#define __NR_sched_yield               158
-#define __NR_sched_get_priority_max    159
-#define __NR_sched_get_priority_min    160
-#define __NR_sched_rr_get_interval     161
-#define __NR_nanosleep         162
-#define __NR_mremap            163
-#define __NR_setresuid         164
-#define __NR_getresuid         165
-                               /* 166 was sys_vm86 */
-                               /* 167 was sys_query_module */
-#define __NR_poll              168
-#define __NR_nfsservctl                169
-#define __NR_setresgid         170
-#define __NR_getresgid         171
-#define __NR_prctl              172
-#define __NR_rt_sigreturn      173
-#define __NR_rt_sigaction      174
-#define __NR_rt_sigprocmask    175
-#define __NR_rt_sigpending     176
-#define __NR_rt_sigtimedwait   177
-#define __NR_rt_sigqueueinfo   178
-#define __NR_rt_sigsuspend     179
-#define __NR_pread64           180
-#define __NR_pwrite64          181
-#define __NR_chown             182
-#define __NR_getcwd            183
-#define __NR_capget            184
-#define __NR_capset            185
-#define __NR_sigaltstack       186
-#define __NR_sendfile          187
-                               /* 188 reserved for sys_getpmsg */
-                               /* 189 reserved for sys_putpmsg */
-#define __NR_vfork             190
-#define __NR_ugetrlimit                191     /* SuS compliant getrlimit */
-#define __NR_mmap2             192
-#define __NR_truncate64                193
-#define __NR_ftruncate64       194
-#define __NR_stat64            195
-#define __NR_lstat64           196
-#define __NR_fstat64           197
-#define __NR_lchown32          198
-#define __NR_getuid32          199
-#define __NR_getgid32          200
-#define __NR_geteuid32         201
-#define __NR_getegid32         202
-#define __NR_setreuid32                203
-#define __NR_setregid32                204
-#define __NR_getgroups32       205
-#define __NR_setgroups32       206
-#define __NR_fchown32          207
-#define __NR_setresuid32       208
-#define __NR_getresuid32       209
-#define __NR_setresgid32       210
-#define __NR_getresgid32       211
-#define __NR_chown32           212
-#define __NR_setuid32          213
-#define __NR_setgid32          214
-#define __NR_setfsuid32                215
-#define __NR_setfsgid32                216
-#define __NR_pivot_root                217
-#define __NR_mincore           218
-#define __NR_madvise           219
-#define __NR_getdents64                220
-#define __NR_fcntl64           221
-                               /* 222 is reserved for tux */
-                               /* 223 is unused */
-#define __NR_gettid            224
-#define __NR_readahead         225
-#define __NR_setxattr          226
-#define __NR_lsetxattr         227
-#define __NR_fsetxattr         228
-#define __NR_getxattr          229
-#define __NR_lgetxattr         230
-#define __NR_fgetxattr         231
-#define __NR_listxattr         232
-#define __NR_llistxattr                233
-#define __NR_flistxattr                234
-#define __NR_removexattr       235
-#define __NR_lremovexattr      236
-#define __NR_fremovexattr      237
-#define __NR_tkill             238
-#define __NR_sendfile64                239
-#define __NR_futex             240
-#define __NR_sched_setaffinity 241
-#define __NR_sched_getaffinity 242
-                               /* 243 is reserved for set_thread_area */
-                               /* 244 is reserved for get_thread_area */
-#define __NR_io_setup          245
-#define __NR_io_destroy                246
-#define __NR_io_getevents      247
-#define __NR_io_submit         248
-#define __NR_io_cancel         249
-#define __NR_fadvise64         250
-                               /* 251 is unused */
-#define __NR_exit_group                252
-#define __NR_lookup_dcookie    253
-#define __NR_epoll_create      254
-#define __NR_epoll_ctl         255
-#define __NR_epoll_wait                256
-#define __NR_remap_file_pages  257
-#define __NR_set_tid_address   258
-#define __NR_timer_create      259
-#define __NR_timer_settime     (__NR_timer_create+1)
-#define __NR_timer_gettime     (__NR_timer_create+2)
-#define __NR_timer_getoverrun  (__NR_timer_create+3)
-#define __NR_timer_delete      (__NR_timer_create+4)
-#define __NR_clock_settime     (__NR_timer_create+5)
-#define __NR_clock_gettime     (__NR_timer_create+6)
-#define __NR_clock_getres      (__NR_timer_create+7)
-#define __NR_clock_nanosleep   (__NR_timer_create+8)
-#define __NR_statfs64          268
-#define __NR_fstatfs64         269
-#define __NR_tgkill            270
-#define __NR_utimes            271
-#define __NR_fadvise64_64      272
-                               /* 273 is reserved for vserver */
-#define __NR_mbind              274
-#define __NR_get_mempolicy      275
-#define __NR_set_mempolicy      276
-#define __NR_mq_open            277
-#define __NR_mq_unlink          (__NR_mq_open+1)
-#define __NR_mq_timedsend       (__NR_mq_open+2)
-#define __NR_mq_timedreceive    (__NR_mq_open+3)
-#define __NR_mq_notify          (__NR_mq_open+4)
-#define __NR_mq_getsetattr      (__NR_mq_open+5)
-#define __NR_kexec_load                283
-#define __NR_waitid            284
-#define __NR_add_key           285
-#define __NR_request_key       286
-#define __NR_keyctl            287
-#define __NR_ioprio_set                288
-#define __NR_ioprio_get                289
-#define __NR_inotify_init      290
-#define __NR_inotify_add_watch 291
-#define __NR_inotify_rm_watch  292
-                               /* 293 is unused */
-#define __NR_migrate_pages     294
-#define __NR_openat            295
-#define __NR_mkdirat           296
-#define __NR_mknodat           297
-#define __NR_fchownat          298
-#define __NR_futimesat         299
-#define __NR_fstatat64         300
-#define __NR_unlinkat          301
-#define __NR_renameat          302
-#define __NR_linkat            303
-#define __NR_symlinkat         304
-#define __NR_readlinkat                305
-#define __NR_fchmodat          306
-#define __NR_faccessat         307
-#define __NR_pselect6          308
-#define __NR_ppoll             309
-#define __NR_unshare           310
-#define __NR_set_robust_list   311
-#define __NR_get_robust_list   312
-#define __NR_splice            313
-#define __NR_sync_file_range   314
-#define __NR_tee               315
-#define __NR_vmsplice          316
-#define __NR_move_pages                317
-#define __NR_getcpu            318
-#define __NR_epoll_pwait       319
-#define __NR_utimensat         320
-#define __NR_signalfd          321
-#define __NR_timerfd_create    322
-#define __NR_eventfd           323
-#define __NR_fallocate         324
-#define __NR_timerfd_settime   325
-#define __NR_timerfd_gettime   326
-#define __NR_signalfd4         327
-#define __NR_eventfd2          328
-#define __NR_epoll_create1     329
-#define __NR_dup3              330
-#define __NR_pipe2             331
-#define __NR_inotify_init1     332
-#define __NR_preadv            333
-#define __NR_pwritev           334
-#define __NR_rt_tgsigqueueinfo 335
-#define __NR_perf_event_open   336
-#define __NR_fanotify_init     337
-#define __NR_fanotify_mark     338
-#define __NR_prlimit64         339
-
-/* Non-multiplexed socket family */
-#define __NR_socket            340
-#define __NR_bind              341
-#define __NR_connect           342
-#define __NR_listen            343
-#define __NR_accept            344
-#define __NR_getsockname       345
-#define __NR_getpeername       346
-#define __NR_socketpair                347
-#define __NR_send              348
-#define __NR_sendto            349
-#define __NR_recv              350
-#define __NR_recvfrom          351
-#define __NR_shutdown          352
-#define __NR_setsockopt                353
-#define __NR_getsockopt                354
-#define __NR_sendmsg           355
-#define __NR_recvmsg           356
-#define __NR_recvmmsg          357
-#define __NR_accept4           358
-#define __NR_name_to_handle_at 359
-#define __NR_open_by_handle_at 360
-#define __NR_clock_adjtime     361
-#define __NR_syncfs            362
-#define __NR_sendmmsg          363
-#define __NR_setns             364
-#define __NR_process_vm_readv  365
-#define __NR_process_vm_writev 366
-#define __NR_kcmp              367
-#define __NR_finit_module      368
-#define __NR_sched_getattr     369
-#define __NR_sched_setattr     370
-#define __NR_renameat2         371
-#define __NR_seccomp           372
-#define __NR_getrandom         373
-#define __NR_memfd_create      374
-#define __NR_bpf               375
-#define __NR_execveat          376
-#define __NR_userfaultfd       377
-#define __NR_membarrier                378
-#define __NR_mlock2            379
-#define __NR_copy_file_range   380
-#define __NR_preadv2           381
-#define __NR_pwritev2          382
-
-#ifdef __KERNEL__
-#define __NR_syscalls          383
-#endif
-
-#endif /* __ASM_SH_UNISTD_32_H */
index 21ec7528856235655655f7c2dcf16509a1958e96..cafa63c6a932fe901df7ed8e6b15a36d9e5bef46 100644 (file)
 380    common  copy_file_range                 sys_copy_file_range
 381    common  preadv2                         sys_preadv2
 382    common  pwritev2                        sys_pwritev2
+383    common  statx                           sys_statx
+384    common  pkey_mprotect                   sys_pkey_mprotect
+385    common  pkey_alloc                      sys_pkey_alloc
+386    common  pkey_free                       sys_pkey_free
+387    common  rseq                            sys_rseq
+# room for arch specific syscalls
+393    common  semget                          sys_semget
+394    common  semctl                          sys_semctl
+395    common  shmget                          sys_shmget
+396    common  shmctl                          sys_shmctl
+397    common  shmat                           sys_shmat
+398    common  shmdt                           sys_shmdt
+399    common  msgget                          sys_msgget
+400    common  msgsnd                          sys_msgsnd
+401    common  msgrcv                          sys_msgrcv
+402    common  msgctl                          sys_msgctl
index 5194d86ef72d91de243bfb7e7bef17f29008dd06..08696ea5dca871a41a0c10d59e78d6297b8e2a4c 100644 (file)
@@ -59,9 +59,4 @@
 #define __IGNORE_getresgid
 #endif
 
-/* Sparc doesn't have protection keys. */
-#define __IGNORE_pkey_mprotect
-#define __IGNORE_pkey_alloc
-#define __IGNORE_pkey_free
-
 #endif /* _SPARC_UNISTD_H */
index 274ed0b9b3e0aa95ca8e1d7030034bd0bb1e3a79..1c079e7bab0996bc9fcef65bd0c737b06e591ac4 100644 (file)
@@ -344,7 +344,7 @@ SYSCALL_DEFINE6(sparc_ipc, unsigned int, call, int, first, unsigned long, second
                        goto out;
                case SEMTIMEDOP:
                        err = sys_semtimedop(first, ptr, (unsigned int)second,
-                               (const struct timespec __user *)
+                               (const struct __kernel_timespec __user *)
                                             (unsigned long) fifth);
                        goto out;
                case SEMGET:
index c8c77c05ea9787fb484e76a786d1a65c5585a1f4..6992d17cce372ededdfffb4bf04ff5eef6b42ee8 100644 (file)
 359    common  pwritev2                sys_pwritev2                    compat_sys_pwritev2
 360    common  statx                   sys_statx
 361    common  io_pgetevents           sys_io_pgetevents               compat_sys_io_pgetevents
+362    common  pkey_mprotect           sys_pkey_mprotect
+363    common  pkey_alloc              sys_pkey_alloc
+364    common  pkey_free               sys_pkey_free
+365    common  rseq                    sys_rseq
+# room for arch specific syscalls
+392    64      semtimedop                      sys_semtimedop
+393    common  semget                  sys_semget
+394    common  semctl                  sys_semctl                      compat_sys_semctl
+395    common  shmget                  sys_shmget
+396    common  shmctl                  sys_shmctl                      compat_sys_shmctl
+397    common  shmat                   sys_shmat                       compat_sys_shmat
+398    common  shmdt                   sys_shmdt
+399    common  msgget                  sys_msgget
+400    common  msgsnd                  sys_msgsnd                      compat_sys_msgsnd
+401    common  msgrcv                  sys_msgrcv                      compat_sys_msgrcv
+402    common  msgctl                  sys_msgctl                      compat_sys_msgctl
index 3cf7b533b3d1304b44b5eefe7ab55cc09398b2c2..2be1d0eb775408baee31543470501e73488dee66 100644 (file)
 384    i386    arch_prctl              sys_arch_prctl                  __ia32_compat_sys_arch_prctl
 385    i386    io_pgetevents           sys_io_pgetevents               __ia32_compat_sys_io_pgetevents
 386    i386    rseq                    sys_rseq                        __ia32_sys_rseq
+# don't use numbers 387 through 392, add new calls at the end
+393    i386    semget                  sys_semget                      __ia32_sys_semget
+394    i386    semctl                  sys_semctl                      __ia32_compat_sys_semctl
+395    i386    shmget                  sys_shmget                      __ia32_sys_shmget
+396    i386    shmctl                  sys_shmctl                      __ia32_compat_sys_shmctl
+397    i386    shmat                   sys_shmat                       __ia32_compat_sys_shmat
+398    i386    shmdt                   sys_shmdt                       __ia32_sys_shmdt
+399    i386    msgget                  sys_msgget                      __ia32_sys_msgget
+400    i386    msgsnd                  sys_msgsnd                      __ia32_compat_sys_msgsnd
+401    i386    msgrcv                  sys_msgrcv                      __ia32_compat_sys_msgrcv
+402    i386    msgctl                  sys_msgctl                      __ia32_compat_sys_msgctl
index f0b1709a5ffb2b0901d7f2492252876d17bc25a0..9d8128ef50a9ceed743a950687175d057a889094 100644 (file)
 332    common  statx                   __x64_sys_statx
 333    common  io_pgetevents           __x64_sys_io_pgetevents
 334    common  rseq                    __x64_sys_rseq
+# don't use numbers 387 through 423, add new calls after the last
+# 'common' entry
 
 #
 # x32-specific system call numbers start at 512 to avoid cache impact
index 0d34629dafc5194a93641f00f7ea60a7769aa752..81cc52ea1bd54fb2a096667342f212c1421121e2 100644 (file)
 #define __ARCH_WANT_SYS_UTIME
 #define __ARCH_WANT_SYS_GETPGRP
 
-/* 
- * Ignore legacy system calls in the checksyscalls.sh script
- */
-
-#define __IGNORE_fork                          /* use clone */
-#define __IGNORE_time
-#define __IGNORE_alarm                         /* use setitimer */
-#define __IGNORE_pause
-#define __IGNORE_mmap                          /* use mmap2 */
-#define __IGNORE_vfork                         /* use clone */
-#define __IGNORE_fadvise64                     /* use fadvise64_64 */
-
 #define NR_syscalls                            __NR_syscalls
 
 #endif /* _XTENSA_UNISTD_H */
index 69cf91b03b265e399627fc220c3a86e67503b624..c699e014e0dd0177af018621698163bbe05f078f 100644 (file)
 91     common  madvise                         sys_madvise
 92     common  shmget                          sys_shmget
 93     common  shmat                           xtensa_shmat
-94     common  shmctl                          sys_shmctl
+94     common  shmctl                          sys_old_shmctl
 95     common  shmdt                           sys_shmdt
 # Socket Operations
 96     common  socket                          sys_socket
 161    common  semtimedop                      sys_semtimedop
 162    common  semget                          sys_semget
 163    common  semop                           sys_semop
-164    common  semctl                          sys_semctl
+164    common  semctl                          sys_old_semctl
 165    common  available165                    sys_ni_syscall
 166    common  msgget                          sys_msgget
 167    common  msgsnd                          sys_msgsnd
 168    common  msgrcv                          sys_msgrcv
-169    common  msgctl                          sys_msgctl
+169    common  msgctl                          sys_old_msgctl
 170    common  available170                    sys_ni_syscall
 # File System
 171    common  umount2                         sys_umount
 349    common  pkey_alloc                      sys_pkey_alloc
 350    common  pkey_free                       sys_pkey_free
 351    common  statx                           sys_statx
+352    common  rseq                            sys_rseq
index 257cccba30625726c0f78670b3a2c6188ee801eb..938d8908b9e0ab9256bf450317d38c8f8291b722 100644 (file)
@@ -717,6 +717,7 @@ asmlinkage long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr __user *mqst
 
 /* ipc/msg.c */
 asmlinkage long sys_msgget(key_t key, int msgflg);
+asmlinkage long sys_old_msgctl(int msqid, int cmd, struct msqid_ds __user *buf);
 asmlinkage long sys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf);
 asmlinkage long sys_msgrcv(int msqid, struct msgbuf __user *msgp,
                                size_t msgsz, long msgtyp, int msgflg);
@@ -726,6 +727,7 @@ asmlinkage long sys_msgsnd(int msqid, struct msgbuf __user *msgp,
 /* ipc/sem.c */
 asmlinkage long sys_semget(key_t key, int nsems, int semflg);
 asmlinkage long sys_semctl(int semid, int semnum, int cmd, unsigned long arg);
+asmlinkage long sys_old_semctl(int semid, int semnum, int cmd, unsigned long arg);
 asmlinkage long sys_semtimedop(int semid, struct sembuf __user *sops,
                                unsigned nsops,
                                const struct __kernel_timespec __user *timeout);
@@ -734,6 +736,7 @@ asmlinkage long sys_semop(int semid, struct sembuf __user *sops,
 
 /* ipc/shm.c */
 asmlinkage long sys_shmget(key_t key, size_t size, int flag);
+asmlinkage long sys_old_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
 asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
 asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg);
 asmlinkage long sys_shmdt(char __user *shmaddr);
@@ -1185,6 +1188,10 @@ unsigned long ksys_mmap_pgoff(unsigned long addr, unsigned long len,
                              unsigned long prot, unsigned long flags,
                              unsigned long fd, unsigned long pgoff);
 ssize_t ksys_readahead(int fd, loff_t offset, size_t count);
+int ksys_ipc(unsigned int call, int first, unsigned long second,
+       unsigned long third, void __user * ptr, long fifth);
+int compat_ksys_ipc(u32 call, int first, int second,
+       u32 third, u32 ptr, u32 fifth);
 
 /*
  * The following kernel syscall equivalents are just wrappers to fs-internal
index d90127298f12d1536b7594f7cdebd324f3fe4db3..509484dbfd5d5e5a49cc232a2bb7e61bd095ce6b 100644 (file)
@@ -740,6 +740,7 @@ __SC_COMP(__NR_io_pgetevents, sys_io_pgetevents, compat_sys_io_pgetevents)
 __SYSCALL(__NR_rseq, sys_rseq)
 #define __NR_kexec_file_load 294
 __SYSCALL(__NR_kexec_file_load,     sys_kexec_file_load)
+/* 295 through 402 are unassigned to sync up with generic numbers, don't use */
 
 #undef __NR_syscalls
 #define __NR_syscalls 295
index 0833c640591561dc907a443ce4b9dc61cfbab638..8dec945fa030b099b5becf08b4350b23852203d2 100644 (file)
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -567,9 +567,8 @@ out_unlock:
        return err;
 }
 
-long ksys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
+static long ksys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf, int version)
 {
-       int version;
        struct ipc_namespace *ns;
        struct msqid64_ds msqid64;
        int err;
@@ -577,7 +576,6 @@ long ksys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
        if (msqid < 0 || cmd < 0)
                return -EINVAL;
 
-       version = ipc_parse_version(&cmd);
        ns = current->nsproxy->ipc_ns;
 
        switch (cmd) {
@@ -613,9 +611,23 @@ long ksys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
 
 SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
 {
-       return ksys_msgctl(msqid, cmd, buf);
+       return ksys_msgctl(msqid, cmd, buf, IPC_64);
 }
 
+#ifdef CONFIG_ARCH_WANT_IPC_PARSE_VERSION
+long ksys_old_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
+{
+       int version = ipc_parse_version(&cmd);
+
+       return ksys_msgctl(msqid, cmd, buf, version);
+}
+
+SYSCALL_DEFINE3(old_msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
+{
+       return ksys_old_msgctl(msqid, cmd, buf);
+}
+#endif
+
 #ifdef CONFIG_COMPAT
 
 struct compat_msqid_ds {
@@ -689,12 +701,11 @@ static int copy_compat_msqid_to_user(void __user *buf, struct msqid64_ds *in,
        }
 }
 
-long compat_ksys_msgctl(int msqid, int cmd, void __user *uptr)
+static long compat_ksys_msgctl(int msqid, int cmd, void __user *uptr, int version)
 {
        struct ipc_namespace *ns;
        int err;
        struct msqid64_ds msqid64;
-       int version = compat_ipc_parse_version(&cmd);
 
        ns = current->nsproxy->ipc_ns;
 
@@ -734,8 +745,22 @@ long compat_ksys_msgctl(int msqid, int cmd, void __user *uptr)
 
 COMPAT_SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, void __user *, uptr)
 {
-       return compat_ksys_msgctl(msqid, cmd, uptr);
+       return compat_ksys_msgctl(msqid, cmd, uptr, IPC_64);
 }
+
+#ifdef CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION
+long compat_ksys_old_msgctl(int msqid, int cmd, void __user *uptr)
+{
+       int version = compat_ipc_parse_version(&cmd);
+
+       return compat_ksys_msgctl(msqid, cmd, uptr, version);
+}
+
+COMPAT_SYSCALL_DEFINE3(old_msgctl, int, msqid, int, cmd, void __user *, uptr)
+{
+       return compat_ksys_old_msgctl(msqid, cmd, uptr);
+}
+#endif
 #endif
 
 static int testmsg(struct msg_msg *msg, long type, int mode)
index 745dc6187e844579003c3a1a0ce53662d1127294..d1efff3a81bb52a03bce38d3f1928768a4b0c7b2 100644 (file)
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1634,9 +1634,8 @@ out_up:
        return err;
 }
 
-long ksys_semctl(int semid, int semnum, int cmd, unsigned long arg)
+static long ksys_semctl(int semid, int semnum, int cmd, unsigned long arg, int version)
 {
-       int version;
        struct ipc_namespace *ns;
        void __user *p = (void __user *)arg;
        struct semid64_ds semid64;
@@ -1645,7 +1644,6 @@ long ksys_semctl(int semid, int semnum, int cmd, unsigned long arg)
        if (semid < 0)
                return -EINVAL;
 
-       version = ipc_parse_version(&cmd);
        ns = current->nsproxy->ipc_ns;
 
        switch (cmd) {
@@ -1691,9 +1689,23 @@ long ksys_semctl(int semid, int semnum, int cmd, unsigned long arg)
 
 SYSCALL_DEFINE4(semctl, int, semid, int, semnum, int, cmd, unsigned long, arg)
 {
-       return ksys_semctl(semid, semnum, cmd, arg);
+       return ksys_semctl(semid, semnum, cmd, arg, IPC_64);
 }
 
+#ifdef CONFIG_ARCH_WANT_IPC_PARSE_VERSION
+long ksys_old_semctl(int semid, int semnum, int cmd, unsigned long arg)
+{
+       int version = ipc_parse_version(&cmd);
+
+       return ksys_semctl(semid, semnum, cmd, arg, version);
+}
+
+SYSCALL_DEFINE4(old_semctl, int, semid, int, semnum, int, cmd, unsigned long, arg)
+{
+       return ksys_old_semctl(semid, semnum, cmd, arg);
+}
+#endif
+
 #ifdef CONFIG_COMPAT
 
 struct compat_semid_ds {
@@ -1744,12 +1756,11 @@ static int copy_compat_semid_to_user(void __user *buf, struct semid64_ds *in,
        }
 }
 
-long compat_ksys_semctl(int semid, int semnum, int cmd, int arg)
+static long compat_ksys_semctl(int semid, int semnum, int cmd, int arg, int version)
 {
        void __user *p = compat_ptr(arg);
        struct ipc_namespace *ns;
        struct semid64_ds semid64;
-       int version = compat_ipc_parse_version(&cmd);
        int err;
 
        ns = current->nsproxy->ipc_ns;
@@ -1792,8 +1803,22 @@ long compat_ksys_semctl(int semid, int semnum, int cmd, int arg)
 
 COMPAT_SYSCALL_DEFINE4(semctl, int, semid, int, semnum, int, cmd, int, arg)
 {
-       return compat_ksys_semctl(semid, semnum, cmd, arg);
+       return compat_ksys_semctl(semid, semnum, cmd, arg, IPC_64);
 }
+
+#ifdef CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION
+long compat_ksys_old_semctl(int semid, int semnum, int cmd, int arg)
+{
+       int version = compat_ipc_parse_version(&cmd);
+
+       return compat_ksys_semctl(semid, semnum, cmd, arg, version);
+}
+
+COMPAT_SYSCALL_DEFINE4(old_semctl, int, semid, int, semnum, int, cmd, int, arg)
+{
+       return compat_ksys_old_semctl(semid, semnum, cmd, arg);
+}
+#endif
 #endif
 
 /* If the task doesn't already have a undo_list, then allocate one
index 0842411cb0e9b28a715d6e2b751a358b0dd7cdb7..ce1ca9f7c6e97ca5035963d2d64e3c57fefe7f6c 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -1137,16 +1137,15 @@ out_unlock1:
        return err;
 }
 
-long ksys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf)
+static long ksys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf, int version)
 {
-       int err, version;
+       int err;
        struct ipc_namespace *ns;
        struct shmid64_ds sem64;
 
        if (cmd < 0 || shmid < 0)
                return -EINVAL;
 
-       version = ipc_parse_version(&cmd);
        ns = current->nsproxy->ipc_ns;
 
        switch (cmd) {
@@ -1194,8 +1193,22 @@ long ksys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf)
 
 SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
 {
-       return ksys_shmctl(shmid, cmd, buf);
+       return ksys_shmctl(shmid, cmd, buf, IPC_64);
+}
+
+#ifdef CONFIG_ARCH_WANT_IPC_PARSE_VERSION
+long ksys_old_shmctl(int shmid, int cmd, struct shmid_ds __user *buf)
+{
+       int version = ipc_parse_version(&cmd);
+
+       return ksys_shmctl(shmid, cmd, buf, version);
+}
+
+SYSCALL_DEFINE3(old_shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
+{
+       return ksys_old_shmctl(shmid, cmd, buf);
 }
+#endif
 
 #ifdef CONFIG_COMPAT
 
@@ -1319,11 +1332,10 @@ static int copy_compat_shmid_from_user(struct shmid64_ds *out, void __user *buf,
        }
 }
 
-long compat_ksys_shmctl(int shmid, int cmd, void __user *uptr)
+long compat_ksys_shmctl(int shmid, int cmd, void __user *uptr, int version)
 {
        struct ipc_namespace *ns;
        struct shmid64_ds sem64;
-       int version = compat_ipc_parse_version(&cmd);
        int err;
 
        ns = current->nsproxy->ipc_ns;
@@ -1378,8 +1390,22 @@ long compat_ksys_shmctl(int shmid, int cmd, void __user *uptr)
 
 COMPAT_SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, void __user *, uptr)
 {
-       return compat_ksys_shmctl(shmid, cmd, uptr);
+       return compat_ksys_shmctl(shmid, cmd, uptr, IPC_64);
 }
+
+#ifdef CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION
+long compat_ksys_old_shmctl(int shmid, int cmd, void __user *uptr)
+{
+       int version = compat_ipc_parse_version(&cmd);
+
+       return compat_ksys_shmctl(shmid, cmd, uptr, version);
+}
+
+COMPAT_SYSCALL_DEFINE3(old_shmctl, int, shmid, int, cmd, void __user *, uptr)
+{
+       return compat_ksys_old_shmctl(shmid, cmd, uptr);
+}
+#endif
 #endif
 
 /*
index 1ac06e3983c0fe41446ad81f7702d7ad0283a07d..581bdff4e7c5129692c0ccacc00ba91074218479 100644 (file)
@@ -17,8 +17,8 @@
 #include <linux/shm.h>
 #include <linux/uaccess.h>
 
-SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
-               unsigned long, third, void __user *, ptr, long, fifth)
+int ksys_ipc(unsigned int call, int first, unsigned long second,
+       unsigned long third, void __user * ptr, long fifth)
 {
        int version, ret;
 
@@ -47,7 +47,7 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
                        return -EINVAL;
                if (get_user(arg, (unsigned long __user *) ptr))
                        return -EFAULT;
-               return ksys_semctl(first, second, third, arg);
+               return ksys_old_semctl(first, second, third, arg);
        }
 
        case MSGSND:
@@ -75,7 +75,7 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
        case MSGGET:
                return ksys_msgget((key_t) first, second);
        case MSGCTL:
-               return ksys_msgctl(first, second,
+               return ksys_old_msgctl(first, second,
                                   (struct msqid_ds __user *)ptr);
 
        case SHMAT:
@@ -100,12 +100,18 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
        case SHMGET:
                return ksys_shmget(first, second, third);
        case SHMCTL:
-               return ksys_shmctl(first, second,
+               return ksys_old_shmctl(first, second,
                                   (struct shmid_ds __user *) ptr);
        default:
                return -ENOSYS;
        }
 }
+
+SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
+               unsigned long, third, void __user *, ptr, long, fifth)
+{
+       return ksys_ipc(call, first, second, third, ptr, fifth);
+}
 #endif
 
 #ifdef CONFIG_COMPAT
@@ -121,8 +127,8 @@ struct compat_ipc_kludge {
 };
 
 #ifdef CONFIG_ARCH_WANT_OLD_COMPAT_IPC
-COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
-       u32, third, compat_uptr_t, ptr, u32, fifth)
+int compat_ksys_ipc(u32 call, int first, int second,
+       u32 third, compat_uptr_t ptr, u32 fifth)
 {
        int version;
        u32 pad;
@@ -146,7 +152,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
                        return -EINVAL;
                if (get_user(pad, (u32 __user *) compat_ptr(ptr)))
                        return -EFAULT;
-               return compat_ksys_semctl(first, second, third, pad);
+               return compat_ksys_old_semctl(first, second, third, pad);
 
        case MSGSND:
                return compat_ksys_msgsnd(first, ptr, second, third);
@@ -171,7 +177,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
        case MSGGET:
                return ksys_msgget(first, second);
        case MSGCTL:
-               return compat_ksys_msgctl(first, second, compat_ptr(ptr));
+               return compat_ksys_old_msgctl(first, second, compat_ptr(ptr));
 
        case SHMAT: {
                int err;
@@ -190,10 +196,16 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
        case SHMGET:
                return ksys_shmget(first, (unsigned int)second, third);
        case SHMCTL:
-               return compat_ksys_shmctl(first, second, compat_ptr(ptr));
+               return compat_ksys_old_shmctl(first, second, compat_ptr(ptr));
        }
 
        return -ENOSYS;
 }
+
+COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
+       u32, third, compat_uptr_t, ptr, u32, fifth)
+{
+       return compat_ksys_ipc(call, first, second, third, ptr, fifth);
+}
 #endif
 #endif
index d768fdbed5154a10b279e061b8cc66eff7e166da..e272be622ae79b4e751202e3d781183975bd0794 100644 (file)
@@ -160,10 +160,7 @@ static inline void ipc_update_pid(struct pid **pos, struct pid *pid)
        }
 }
 
-#ifndef CONFIG_ARCH_WANT_IPC_PARSE_VERSION
-/* On IA-64, we always use the "64-bit version" of the IPC structures.  */
-# define ipc_parse_version(cmd)        IPC_64
-#else
+#ifdef CONFIG_ARCH_WANT_IPC_PARSE_VERSION
 int ipc_parse_version(int *cmd);
 #endif
 
@@ -246,13 +243,9 @@ int get_compat_ipc64_perm(struct ipc64_perm *,
 
 static inline int compat_ipc_parse_version(int *cmd)
 {
-#ifdef CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION
        int version = *cmd & IPC_64;
        *cmd &= ~IPC_64;
        return version;
-#else
-       return IPC_64;
-#endif
 }
 #endif
 
@@ -261,29 +254,29 @@ long ksys_semtimedop(int semid, struct sembuf __user *tsops,
                     unsigned int nsops,
                     const struct __kernel_timespec __user *timeout);
 long ksys_semget(key_t key, int nsems, int semflg);
-long ksys_semctl(int semid, int semnum, int cmd, unsigned long arg);
+long ksys_old_semctl(int semid, int semnum, int cmd, unsigned long arg);
 long ksys_msgget(key_t key, int msgflg);
-long ksys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf);
+long ksys_old_msgctl(int msqid, int cmd, struct msqid_ds __user *buf);
 long ksys_msgrcv(int msqid, struct msgbuf __user *msgp, size_t msgsz,
                 long msgtyp, int msgflg);
 long ksys_msgsnd(int msqid, struct msgbuf __user *msgp, size_t msgsz,
                 int msgflg);
 long ksys_shmget(key_t key, size_t size, int shmflg);
 long ksys_shmdt(char __user *shmaddr);
-long ksys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
+long ksys_old_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
 
 /* for CONFIG_ARCH_WANT_OLD_COMPAT_IPC */
 long compat_ksys_semtimedop(int semid, struct sembuf __user *tsems,
                            unsigned int nsops,
                            const struct old_timespec32 __user *timeout);
 #ifdef CONFIG_COMPAT
-long compat_ksys_semctl(int semid, int semnum, int cmd, int arg);
-long compat_ksys_msgctl(int msqid, int cmd, void __user *uptr);
+long compat_ksys_old_semctl(int semid, int semnum, int cmd, int arg);
+long compat_ksys_old_msgctl(int msqid, int cmd, void __user *uptr);
 long compat_ksys_msgrcv(int msqid, compat_uptr_t msgp, compat_ssize_t msgsz,
                        compat_long_t msgtyp, int msgflg);
 long compat_ksys_msgsnd(int msqid, compat_uptr_t msgp,
                       compat_ssize_t msgsz, int msgflg);
-long compat_ksys_shmctl(int shmid, int cmd, void __user *uptr);
+long compat_ksys_old_shmctl(int shmid, int cmd, void __user *uptr);
 #endif /* CONFIG_COMPAT */
 
 #endif
index ab9d0e3c6d5072b624a37279b28eb6c440ebfb48..ce04431a40d1c620ed4cedb6e3b0e8577d69517d 100644 (file)
@@ -197,6 +197,7 @@ COND_SYSCALL_COMPAT(mq_getsetattr);
 
 /* ipc/msg.c */
 COND_SYSCALL(msgget);
+COND_SYSCALL(old_msgctl);
 COND_SYSCALL(msgctl);
 COND_SYSCALL_COMPAT(msgctl);
 COND_SYSCALL(msgrcv);
@@ -206,6 +207,7 @@ COND_SYSCALL_COMPAT(msgsnd);
 
 /* ipc/sem.c */
 COND_SYSCALL(semget);
+COND_SYSCALL(old_semctl);
 COND_SYSCALL(semctl);
 COND_SYSCALL_COMPAT(semctl);
 COND_SYSCALL(semtimedop);
@@ -214,6 +216,7 @@ COND_SYSCALL(semop);
 
 /* ipc/shm.c */
 COND_SYSCALL(shmget);
+COND_SYSCALL(old_shmctl);
 COND_SYSCALL(shmctl);
 COND_SYSCALL_COMPAT(shmctl);
 COND_SYSCALL(shmat);
@@ -366,6 +369,7 @@ COND_SYSCALL(kexec_file_load);
 /* s390 */
 COND_SYSCALL(s390_pci_mmio_read);
 COND_SYSCALL(s390_pci_mmio_write);
+COND_SYSCALL(s390_ipc);
 COND_SYSCALL_COMPAT(s390_ipc);
 
 /* powerpc */