History

Merge tag 'y2038-syscall-abi' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground into timers/2038

Pull additional syscall ABI cleanup for y2038 from Arnd Bergmann: This is a follow-up to the y2038 syscall patches already merged in the tip tree. As the final 32-bit RISC-V syscall ABI is still being decided on, this is the last chance to make a few corrections to leave out interfaces based on 32-bit time_t along with the old off_t and rlimit types. The series achieves this in a few steps: - A couple of bug fixes for minor regressions I introduced in the original series - A couple of older patches from Yury Norov that I had never merged in the past, these fix up the openat/open_by_handle_at and getrlimit/setrlimit syscalls to disallow the old versions of off_t and rlimit. - Hiding the deprecated system calls behind an #ifdef in include/uapi/asm-generic/unistd.h - Change arch/riscv to drop all these ABIs. Originally, the plan was to also leave these out on C-Sky, but that now has a glibc port that uses the older interfaces, so we need to leave them in place.

Thomas Gleixner committed 7 years ago

Commit cfbe2712 parents 41ea391 d4c08b936 files · +110 −8Browse files

Unified · Split

36 files
  1. arch/Kconfig +10 −0
  2. arch/arc/Kconfig +1 −0
  3. arch/arc/include/uapi/asm/unistd.h +2 −0
  4. arch/arm/Kconfig +1 −0
  5. arch/arm64/include/uapi/asm/unistd.h +2 −0
  6. arch/c6x/Kconfig +1 −0
  7. arch/c6x/include/uapi/asm/unistd.h +2 −0
  8. arch/csky/Kconfig +1 −0
  9. arch/csky/include/uapi/asm/unistd.h +2 −0
  10. arch/h8300/Kconfig +1 −0
  11. arch/h8300/include/uapi/asm/unistd.h +2 −0
  12. arch/hexagon/Kconfig +1 −0
  13. arch/hexagon/include/uapi/asm/unistd.h +2 −0
  14. arch/m68k/Kconfig +1 −0
  15. arch/microblaze/Kconfig +1 −0
  16. arch/mips/Kconfig +1 −0
  17. arch/nds32/Kconfig +1 −0
  18. arch/nds32/include/uapi/asm/unistd.h +2 −0
  19. arch/nios2/Kconfig +1 −0
  20. arch/nios2/include/uapi/asm/unistd.h +2 −0
  21. arch/openrisc/Kconfig +1 −0
  22. arch/openrisc/include/uapi/asm/unistd.h +2 −0
  23. arch/parisc/Kconfig +1 −0
  24. arch/powerpc/Kconfig +1 −0
  25. arch/riscv/include/uapi/asm/unistd.h +1 −0
  26. arch/riscv/kernel/vdso/Makefile +2 −0
  27. arch/sh/Kconfig +1 −0
  28. arch/sparc/Kconfig +1 −0
  29. arch/unicore32/Kconfig +1 −0
  30. arch/unicore32/include/uapi/asm/unistd.h +3 −1
  31. arch/x86/Kconfig +1 −0
  32. arch/x86/um/Kconfig +1 −0
  33. arch/xtensa/Kconfig +1 −0
  34. include/linux/fcntl.h +1 −1
  35. include/uapi/asm-generic/unistd.h +43 −3
  36. scripts/checksyscalls.sh +12 −3
arch/Kconfig+10−0
@@ -276,6 +276,16 @@ config ARCH_THREAD_STACK_ALLOCATOR · 275 unmodified lines
276276 config ARCH_WANTS_DYNAMIC_TASK_STRUCT
277277 bool
278278
279+config ARCH_32BIT_OFF_T
280+ bool
281+ depends on !64BIT
282+ help
283+ All new 32-bit architectures should have 64-bit off_t type on
284+ userspace side which corresponds to the loff_t kernel type. This
285+ is the requirement for modern ABIs. Some existing architectures
286+ still support 32-bit off_t. This option is enabled for all such
287+ architectures explicitly.
288+
279289 config HAVE_REGS_AND_STACK_ACCESS_API
280290 bool
281291 help
arch/arc/Kconfig+1−0
@@ -14,6 +14,7 @@ config ARC · 13 unmodified lines
1414 select ARCH_HAS_SYNC_DMA_FOR_CPU
1515 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
1616 select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC
17+ select ARCH_32BIT_OFF_T
1718 select BUILDTIME_EXTABLE_SORT
1819 select CLONE_BACKWARDS
1920 select COMMON_CLK
arch/arc/include/uapi/asm/unistd.h+2−0
@@ -18,10 +18,12 @@ · 17 unmodified lines
1818
1919 #define __ARCH_WANT_RENAMEAT
2020 #define __ARCH_WANT_STAT64
21+#define __ARCH_WANT_SET_GET_RLIMIT
2122 #define __ARCH_WANT_SYS_EXECVE
2223 #define __ARCH_WANT_SYS_CLONE
2324 #define __ARCH_WANT_SYS_VFORK
2425 #define __ARCH_WANT_SYS_FORK
26+#define __ARCH_WANT_TIME32_SYSCALLS
2527
2628 #define sys_mmap2 sys_mmap_pgoff
2729
arch/arm/Kconfig+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 config ARM
33 bool
44 default y
5+ select ARCH_32BIT_OFF_T
56 select ARCH_CLOCKSOURCE_DATA
67 select ARCH_DISCARD_MEMBLOCK if !HAVE_ARCH_PFN_VALID && !KEXEC
78 select ARCH_HAS_DEBUG_VIRTUAL if MMU
arch/arm64/include/uapi/asm/unistd.h+2−0
@@ -17,5 +17,7 @@ · 16 unmodified lines
1717
1818 #define __ARCH_WANT_RENAMEAT
1919 #define __ARCH_WANT_NEW_STAT
20+#define __ARCH_WANT_SET_GET_RLIMIT
21+#define __ARCH_WANT_TIME32_SYSCALLS
2022
2123 #include <asm-generic/unistd.h>
arch/c6x/Kconfig+1−0
@@ -6,6 +6,7 @@ · 5 unmodified lines
66
77 config C6X
88 def_bool y
9+ select ARCH_32BIT_OFF_T
910 select ARCH_HAS_SYNC_DMA_FOR_CPU
1011 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
1112 select CLKDEV_LOOKUP
arch/c6x/include/uapi/asm/unistd.h+2−0
@@ -17,7 +17,9 @@ · 16 unmodified lines
1717
1818 #define __ARCH_WANT_RENAMEAT
1919 #define __ARCH_WANT_STAT64
20+#define __ARCH_WANT_SET_GET_RLIMIT
2021 #define __ARCH_WANT_SYS_CLONE
22+#define __ARCH_WANT_TIME32_SYSCALLS
2123
2224 /* Use the standard ABI for syscalls. */
2325 #include <asm-generic/unistd.h>
arch/csky/Kconfig+1−0
@@ -1,5 +1,6 @@
11 config CSKY
22 def_bool y
3+ select ARCH_32BIT_OFF_T
34 select ARCH_HAS_SYNC_DMA_FOR_CPU
45 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
56 select ARCH_USE_BUILTIN_BSWAP
arch/csky/include/uapi/asm/unistd.h+2−0
@@ -2,6 +2,8 @@ · 1 unmodified line
22 // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
33
44 #define __ARCH_WANT_SYS_CLONE
5+#define __ARCH_WANT_SET_GET_RLIMIT
6+#define __ARCH_WANT_TIME32_SYSCALLS
57 #include <asm-generic/unistd.h>
68
79 #define __NR_set_thread_area (__NR_arch_specific_syscall + 0)
arch/h8300/Kconfig+1−0
@@ -1,6 +1,7 @@
11 # SPDX-License-Identifier: GPL-2.0
22 config H8300
33 def_bool y
4+ select ARCH_32BIT_OFF_T
45 select GENERIC_ATOMIC64
56 select HAVE_UID16
67 select VIRT_TO_BUS
arch/h8300/include/uapi/asm/unistd.h+2−0
@@ -2,5 +2,7 @@ · 1 unmodified line
22
33 #define __ARCH_WANT_RENAMEAT
44 #define __ARCH_WANT_STAT64
5+#define __ARCH_WANT_SET_GET_RLIMIT
6+#define __ARCH_WANT_TIME32_SYSCALLS
57
68 #include <asm-generic/unistd.h>
arch/hexagon/Kconfig+1−0
@@ -4,6 +4,7 @@ comment "Linux Kernel Configuration for Hexagon" · 3 unmodified lines
44
55 config HEXAGON
66 def_bool y
7+ select ARCH_32BIT_OFF_T
78 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
89 select ARCH_NO_PREEMPT
910 select HAVE_OPROFILE
arch/hexagon/include/uapi/asm/unistd.h+2−0
@@ -30,9 +30,11 @@ · 29 unmodified lines
3030 #define sys_mmap2 sys_mmap_pgoff
3131 #define __ARCH_WANT_RENAMEAT
3232 #define __ARCH_WANT_STAT64
33+#define __ARCH_WANT_SET_GET_RLIMIT
3334 #define __ARCH_WANT_SYS_EXECVE
3435 #define __ARCH_WANT_SYS_CLONE
3536 #define __ARCH_WANT_SYS_VFORK
3637 #define __ARCH_WANT_SYS_FORK
38+#define __ARCH_WANT_TIME32_SYSCALLS
3739
3840 #include <asm-generic/unistd.h>
arch/m68k/Kconfig+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 config M68K
33 bool
44 default y
5+ select ARCH_32BIT_OFF_T
56 select ARCH_HAS_SYNC_DMA_FOR_DEVICE if HAS_DMA
67 select ARCH_MIGHT_HAVE_PC_PARPORT if ISA
78 select ARCH_NO_COHERENT_DMA_MMAP if !MMU
arch/microblaze/Kconfig+1−0
@@ -1,5 +1,6 @@
11 config MICROBLAZE
22 def_bool y
3+ select ARCH_32BIT_OFF_T
34 select ARCH_NO_SWAP
45 select ARCH_HAS_DMA_COHERENT_TO_PFN if MMU
56 select ARCH_HAS_GCOV_PROFILE_ALL
arch/mips/Kconfig+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 config MIPS
33 bool
44 default y
5+ select ARCH_32BIT_OFF_T if !64BIT
56 select ARCH_BINFMT_ELF_STATE if MIPS_FP_SUPPORT
67 select ARCH_CLOCKSOURCE_DATA
78 select ARCH_DISCARD_MEMBLOCK
arch/nds32/Kconfig+1−0
@@ -5,6 +5,7 @@ · 4 unmodified lines
55
66 config NDS32
77 def_bool y
8+ select ARCH_32BIT_OFF_T
89 select ARCH_HAS_SYNC_DMA_FOR_CPU
910 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
1011 select ARCH_WANT_FRAME_POINTERS if FTRACE
arch/nds32/include/uapi/asm/unistd.h+2−0
@@ -3,6 +3,8 @@ · 2 unmodified lines
33
44 #define __ARCH_WANT_STAT64
55 #define __ARCH_WANT_SYNC_FILE_RANGE2
6+#define __ARCH_WANT_SET_GET_RLIMIT
7+#define __ARCH_WANT_TIME32_SYSCALLS
68
79 /* Use the standard ABI for syscalls */
810 #include <asm-generic/unistd.h>
arch/nios2/Kconfig+1−0
@@ -1,6 +1,7 @@
11 # SPDX-License-Identifier: GPL-2.0
22 config NIOS2
33 def_bool y
4+ select ARCH_32BIT_OFF_T
45 select ARCH_HAS_SYNC_DMA_FOR_CPU
56 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
67 select ARCH_NO_SWAP
arch/nios2/include/uapi/asm/unistd.h+2−0
@@ -20,6 +20,8 @@ · 19 unmodified lines
2020
2121 #define __ARCH_WANT_RENAMEAT
2222 #define __ARCH_WANT_STAT64
23+#define __ARCH_WANT_SET_GET_RLIMIT
24+#define __ARCH_WANT_TIME32_SYSCALLS
2325
2426 /* Use the standard ABI for syscalls */
2527 #include <asm-generic/unistd.h>
arch/openrisc/Kconfig+1−0
@@ -6,6 +6,7 @@ · 5 unmodified lines
66
77 config OPENRISC
88 def_bool y
9+ select ARCH_32BIT_OFF_T
910 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
1011 select OF
1112 select OF_EARLY_FLATTREE
arch/openrisc/include/uapi/asm/unistd.h+2−0
@@ -21,8 +21,10 @@ · 20 unmodified lines
2121
2222 #define __ARCH_WANT_RENAMEAT
2323 #define __ARCH_WANT_STAT64
24+#define __ARCH_WANT_SET_GET_RLIMIT
2425 #define __ARCH_WANT_SYS_FORK
2526 #define __ARCH_WANT_SYS_CLONE
27+#define __ARCH_WANT_TIME32_SYSCALLS
2628
2729 #include <asm-generic/unistd.h>
2830
arch/parisc/Kconfig+1−0
@@ -1,6 +1,7 @@
11 # SPDX-License-Identifier: GPL-2.0
22 config PARISC
33 def_bool y
4+ select ARCH_32BIT_OFF_T if !64BIT
45 select ARCH_MIGHT_HAVE_PC_PARPORT
56 select HAVE_IDE
67 select HAVE_OPROFILE
arch/powerpc/Kconfig+1−0
@@ -128,6 +128,7 @@ config PPC · 127 unmodified lines
128128 #
129129 # Please keep this list sorted alphabetically.
130130 #
131+ select ARCH_32BIT_OFF_T if PPC32
131132 select ARCH_HAS_DEBUG_VIRTUAL
132133 select ARCH_HAS_DEVMEM_IS_ALLOWED
133134 select ARCH_HAS_DMA_SET_COHERENT_MASK
arch/riscv/include/uapi/asm/unistd.h+1−0
@@ -17,6 +17,7 @@ · 16 unmodified lines
1717
1818 #ifdef __LP64__
1919 #define __ARCH_WANT_NEW_STAT
20+#define __ARCH_WANT_SET_GET_RLIMIT
2021 #endif /* __LP64__ */
2122
2223 #include <asm-generic/unistd.h>
arch/riscv/kernel/vdso/Makefile+2−0
@@ -2,9 +2,11 @@ · 1 unmodified line
22
33 # Symbols present in the vdso
44 vdso-syms = rt_sigreturn
5+ifdef CONFIG_64BIT
56 vdso-syms += gettimeofday
67 vdso-syms += clock_gettime
78 vdso-syms += clock_getres
9+endif
810 vdso-syms += getcpu
911 vdso-syms += flush_icache
1012
arch/sh/Kconfig+1−0
@@ -62,6 +62,7 @@ config SUPERH · 61 unmodified lines
6262
6363 config SUPERH32
6464 def_bool "$(ARCH)" = "sh"
65+ select ARCH_32BIT_OFF_T
6566 select HAVE_KPROBES
6667 select HAVE_KRETPROBES
6768 select HAVE_IOREMAP_PROT if MMU && !X2TLB
arch/sparc/Kconfig+1−0
@@ -49,6 +49,7 @@ config SPARC · 48 unmodified lines
4949
5050 config SPARC32
5151 def_bool !64BIT
52+ select ARCH_32BIT_OFF_T
5253 select ARCH_HAS_SYNC_DMA_FOR_CPU
5354 select GENERIC_ATOMIC64
5455 select CLZ_TAB
arch/unicore32/Kconfig+1−0
@@ -1,6 +1,7 @@
11 # SPDX-License-Identifier: GPL-2.0
22 config UNICORE32
33 def_bool y
4+ select ARCH_32BIT_OFF_T
45 select ARCH_HAS_DEVMEM_IS_ALLOWED
56 select ARCH_MIGHT_HAVE_PC_PARPORT
67 select ARCH_MIGHT_HAVE_PC_SERIO
arch/unicore32/include/uapi/asm/unistd.h+3−1
@@ -12,8 +12,10 @@ · 11 unmodified lines
1212 */
1313
1414 #define __ARCH_WANT_RENAMEAT
15+#define __ARCH_WANT_SET_GET_RLIMIT
16+#define __ARCH_WANT_STAT64
17+#define __ARCH_WANT_TIME32_SYSCALLS
1518
1619 /* Use the standard ABI for syscalls. */
1720 #include <asm-generic/unistd.h>
18−#define __ARCH_WANT_STAT64
1921 #define __ARCH_WANT_SYS_CLONE
arch/x86/Kconfig+1−0
@@ -47,6 +47,7 @@ config X86 · 46 unmodified lines
4747 select ACPI_LEGACY_TABLES_LOOKUP if ACPI
4848 select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
4949 select ANON_INODES
50+ select ARCH_32BIT_OFF_T if X86_32
5051 select ARCH_CLOCKSOURCE_DATA
5152 select ARCH_CLOCKSOURCE_INIT
5253 select ARCH_DISCARD_MEMBLOCK
arch/x86/um/Kconfig+1−0
@@ -17,6 +17,7 @@ config 64BIT · 16 unmodified lines
1717 config X86_32
1818 def_bool !64BIT
1919 select HAVE_AOUT
20+ select ARCH_32BIT_OFF_T
2021 select ARCH_WANT_IPC_PARSE_VERSION
2122 select MODULES_USE_ELF_REL
2223 select CLONE_BACKWARDS
arch/xtensa/Kconfig+1−0
@@ -1,6 +1,7 @@
11 # SPDX-License-Identifier: GPL-2.0
22 config XTENSA
33 def_bool y
4+ select ARCH_32BIT_OFF_T
45 select ARCH_HAS_SYNC_DMA_FOR_CPU
56 select ARCH_HAS_SYNC_DMA_FOR_DEVICE
67 select ARCH_NO_COHERENT_DMA_MMAP if !MMU
include/linux/fcntl.h+1−1
@@ -12,7 +12,7 @@ · 11 unmodified lines
1212 O_NOATIME | O_CLOEXEC | O_PATH | __O_TMPFILE)
1313
1414 #ifndef force_o_largefile
15−#define force_o_largefile() (BITS_PER_LONG != 32)
15+#define force_o_largefile() (!IS_ENABLED(CONFIG_ARCH_32BIT_OFF_T))
1616 #endif
1717
1818 #if BITS_PER_LONG == 32
include/uapi/asm-generic/unistd.h+43−3
@@ -38,8 +38,10 @@ __SYSCALL(__NR_io_destroy, sys_io_destroy) · 37 unmodified lines
3838 __SC_COMP(__NR_io_submit, sys_io_submit, compat_sys_io_submit)
3939 #define __NR_io_cancel 3
4040 __SYSCALL(__NR_io_cancel, sys_io_cancel)
41+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
4142 #define __NR_io_getevents 4
4243 __SC_3264(__NR_io_getevents, sys_io_getevents_time32, sys_io_getevents)
44+#endif
4345
4446 /* fs/xattr.c */
4547 #define __NR_setxattr 5
@@ -179,7 +181,7 @@ __SYSCALL(__NR_fchownat, sys_fchownat) · 133 unmodified lines
179181 #define __NR_fchown 55
180182 __SYSCALL(__NR_fchown, sys_fchown)
181183 #define __NR_openat 56
182−__SC_COMP(__NR_openat, sys_openat, compat_sys_openat)
184+__SYSCALL(__NR_openat, sys_openat)
183185 #define __NR_close 57
184186 __SYSCALL(__NR_close, sys_close)
185187 #define __NR_vhangup 58
@@ -222,10 +224,12 @@ __SC_COMP(__NR_pwritev, sys_pwritev, compat_sys_pwritev) · 36 unmodified lines
222224 __SYSCALL(__NR3264_sendfile, sys_sendfile64)
223225
224226 /* fs/select.c */
227+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
225228 #define __NR_pselect6 72
226229 __SC_COMP_3264(__NR_pselect6, sys_pselect6_time32, sys_pselect6, compat_sys_pselect6_time32)
227230 #define __NR_ppoll 73
228231 __SC_COMP_3264(__NR_ppoll, sys_ppoll_time32, sys_ppoll, compat_sys_ppoll_time32)
232+#endif
229233
230234 /* fs/signalfd.c */
231235 #define __NR_signalfd4 74
@@ -269,16 +273,20 @@ __SC_COMP(__NR_sync_file_range, sys_sync_file_range, \ · 37 unmodified lines
269273 /* fs/timerfd.c */
270274 #define __NR_timerfd_create 85
271275 __SYSCALL(__NR_timerfd_create, sys_timerfd_create)
276+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
272277 #define __NR_timerfd_settime 86
273278 __SC_3264(__NR_timerfd_settime, sys_timerfd_settime32, \
274279 sys_timerfd_settime)
275280 #define __NR_timerfd_gettime 87
276281 __SC_3264(__NR_timerfd_gettime, sys_timerfd_gettime32, \
277282 sys_timerfd_gettime)
283+#endif
278284
279285 /* fs/utimes.c */
286+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
280287 #define __NR_utimensat 88
281288 __SC_3264(__NR_utimensat, sys_utimensat_time32, sys_utimensat)
289+#endif
282290
283291 /* kernel/acct.c */
284292 #define __NR_acct 89
@@ -309,8 +317,10 @@ __SYSCALL(__NR_set_tid_address, sys_set_tid_address) · 24 unmodified lines
309317 __SYSCALL(__NR_unshare, sys_unshare)
310318
311319 /* kernel/futex.c */
320+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
312321 #define __NR_futex 98
313322 __SC_3264(__NR_futex, sys_futex_time32, sys_futex)
323+#endif
314324 #define __NR_set_robust_list 99
315325 __SC_COMP(__NR_set_robust_list, sys_set_robust_list, \
316326 compat_sys_set_robust_list)
@@ -319,8 +329,10 @@ __SC_COMP(__NR_get_robust_list, sys_get_robust_list, \ · 2 unmodified lines
319329 compat_sys_get_robust_list)
320330
321331 /* kernel/hrtimer.c */
332+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
322333 #define __NR_nanosleep 101
323334 __SC_3264(__NR_nanosleep, sys_nanosleep_time32, sys_nanosleep)
335+#endif
324336
325337 /* kernel/itimer.c */
326338 #define __NR_getitimer 102
@@ -341,14 +353,19 @@ __SYSCALL(__NR_delete_module, sys_delete_module) · 14 unmodified lines
341353 /* kernel/posix-timers.c */
342354 #define __NR_timer_create 107
343355 __SC_COMP(__NR_timer_create, sys_timer_create, compat_sys_timer_create)
356+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
344357 #define __NR_timer_gettime 108
345358 __SC_3264(__NR_timer_gettime, sys_timer_gettime32, sys_timer_gettime)
359+#endif
346360 #define __NR_timer_getoverrun 109
347361 __SYSCALL(__NR_timer_getoverrun, sys_timer_getoverrun)
362+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
348363 #define __NR_timer_settime 110
349364 __SC_3264(__NR_timer_settime, sys_timer_settime32, sys_timer_settime)
365+#endif
350366 #define __NR_timer_delete 111
351367 __SYSCALL(__NR_timer_delete, sys_timer_delete)
368+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
352369 #define __NR_clock_settime 112
353370 __SC_3264(__NR_clock_settime, sys_clock_settime32, sys_clock_settime)
354371 #define __NR_clock_gettime 113
@@ -358,6 +375,7 @@ __SC_3264(__NR_clock_getres, sys_clock_getres_time32, sys_clock_getres) · 3 unmodified lines
358375 #define __NR_clock_nanosleep 115
359376 __SC_3264(__NR_clock_nanosleep, sys_clock_nanosleep_time32, \
360377 sys_clock_nanosleep)
378+#endif
361379
362380 /* kernel/printk.c */
363381 #define __NR_syslog 116
@@ -388,9 +406,11 @@ __SYSCALL(__NR_sched_yield, sys_sched_yield) · 24 unmodified lines
388406 __SYSCALL(__NR_sched_get_priority_max, sys_sched_get_priority_max)
389407 #define __NR_sched_get_priority_min 126
390408 __SYSCALL(__NR_sched_get_priority_min, sys_sched_get_priority_min)
409+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
391410 #define __NR_sched_rr_get_interval 127
392411 __SC_3264(__NR_sched_rr_get_interval, sys_sched_rr_get_interval_time32, \
393412 sys_sched_rr_get_interval)
413+#endif
394414
395415 /* kernel/signal.c */
396416 #define __NR_restart_syscall 128
@@ -411,9 +431,11 @@ __SC_COMP(__NR_rt_sigaction, sys_rt_sigaction, compat_sys_rt_sigaction) · 14 unmodified lines
411431 __SC_COMP(__NR_rt_sigprocmask, sys_rt_sigprocmask, compat_sys_rt_sigprocmask)
412432 #define __NR_rt_sigpending 136
413433 __SC_COMP(__NR_rt_sigpending, sys_rt_sigpending, compat_sys_rt_sigpending)
434+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
414435 #define __NR_rt_sigtimedwait 137
415436 __SC_COMP_3264(__NR_rt_sigtimedwait, sys_rt_sigtimedwait_time32, \
416437 sys_rt_sigtimedwait, compat_sys_rt_sigtimedwait_time32)
438+#endif
417439 #define __NR_rt_sigqueueinfo 138
418440 __SC_COMP(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo, \
419441 compat_sys_rt_sigqueueinfo)
@@ -467,10 +489,15 @@ __SYSCALL(__NR_uname, sys_newuname) · 47 unmodified lines
467489 __SYSCALL(__NR_sethostname, sys_sethostname)
468490 #define __NR_setdomainname 162
469491 __SYSCALL(__NR_setdomainname, sys_setdomainname)
492+
493+#ifdef __ARCH_WANT_SET_GET_RLIMIT
494+/* getrlimit and setrlimit are superseded with prlimit64 */
470495 #define __NR_getrlimit 163
471496 __SC_COMP(__NR_getrlimit, sys_getrlimit, compat_sys_getrlimit)
472497 #define __NR_setrlimit 164
473498 __SC_COMP(__NR_setrlimit, sys_setrlimit, compat_sys_setrlimit)
499+#endif
500+
474501 #define __NR_getrusage 165
475502 __SC_COMP(__NR_getrusage, sys_getrusage, compat_sys_getrusage)
476503 #define __NR_umask 166
@@ -481,12 +508,14 @@ __SYSCALL(__NR_prctl, sys_prctl) · 4 unmodified lines
481508 __SYSCALL(__NR_getcpu, sys_getcpu)
482509
483510 /* kernel/time.c */
511+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
484512 #define __NR_gettimeofday 169
485513 __SC_COMP(__NR_gettimeofday, sys_gettimeofday, compat_sys_gettimeofday)
486514 #define __NR_settimeofday 170
487515 __SC_COMP(__NR_settimeofday, sys_settimeofday, compat_sys_settimeofday)
488516 #define __NR_adjtimex 171
489517 __SC_3264(__NR_adjtimex, sys_adjtimex_time32, sys_adjtimex)
518+#endif
490519
491520 /* kernel/timer.c */
492521 #define __NR_getpid 172
@@ -511,11 +540,13 @@ __SC_COMP(__NR_sysinfo, sys_sysinfo, compat_sys_sysinfo) · 18 unmodified lines
511540 __SC_COMP(__NR_mq_open, sys_mq_open, compat_sys_mq_open)
512541 #define __NR_mq_unlink 181
513542 __SYSCALL(__NR_mq_unlink, sys_mq_unlink)
543+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
514544 #define __NR_mq_timedsend 182
515545 __SC_3264(__NR_mq_timedsend, sys_mq_timedsend_time32, sys_mq_timedsend)
516546 #define __NR_mq_timedreceive 183
517547 __SC_3264(__NR_mq_timedreceive, sys_mq_timedreceive_time32, \
518548 sys_mq_timedreceive)
549+#endif
519550 #define __NR_mq_notify 184
520551 __SC_COMP(__NR_mq_notify, sys_mq_notify, compat_sys_mq_notify)
521552 #define __NR_mq_getsetattr 185
@@ -536,8 +567,10 @@ __SC_COMP(__NR_msgsnd, sys_msgsnd, compat_sys_msgsnd) · 14 unmodified lines
536567 __SYSCALL(__NR_semget, sys_semget)
537568 #define __NR_semctl 191
538569 __SC_COMP(__NR_semctl, sys_semctl, compat_sys_semctl)
570+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
539571 #define __NR_semtimedop 192
540572 __SC_COMP(__NR_semtimedop, sys_semtimedop, sys_semtimedop_time32)
573+#endif
541574 #define __NR_semop 193
542575 __SYSCALL(__NR_semop, sys_semop)
543576
@@ -658,8 +691,10 @@ __SC_COMP(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo, \ · 114 unmodified lines
658691 __SYSCALL(__NR_perf_event_open, sys_perf_event_open)
659692 #define __NR_accept4 242
660693 __SYSCALL(__NR_accept4, sys_accept4)
694+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
661695 #define __NR_recvmmsg 243
662696 __SC_COMP_3264(__NR_recvmmsg, sys_recvmmsg_time32, sys_recvmmsg, compat_sys_recvmmsg_time32)
697+#endif
663698
664699 /*
665700 * Architectures may provide up to 16 syscalls of their own
@@ -667,8 +702,10 @@ __SC_COMP_3264(__NR_recvmmsg, sys_recvmmsg_time32, sys_recvmmsg, compat_sys_recv · 1 unmodified line
667702 */
668703 #define __NR_arch_specific_syscall 244
669704
705+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
670706 #define __NR_wait4 260
671707 __SC_COMP(__NR_wait4, sys_wait4, compat_sys_wait4)
708+#endif
672709 #define __NR_prlimit64 261
673710 __SYSCALL(__NR_prlimit64, sys_prlimit64)
674711 #define __NR_fanotify_init 262
@@ -678,10 +715,11 @@ __SYSCALL(__NR_fanotify_mark, sys_fanotify_mark) · 3 unmodified lines
678715 #define __NR_name_to_handle_at 264
679716 __SYSCALL(__NR_name_to_handle_at, sys_name_to_handle_at)
680717 #define __NR_open_by_handle_at 265
681−__SC_COMP(__NR_open_by_handle_at, sys_open_by_handle_at, \
682− compat_sys_open_by_handle_at)
718+__SYSCALL(__NR_open_by_handle_at, sys_open_by_handle_at)
719+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
683720 #define __NR_clock_adjtime 266
684721 __SC_3264(__NR_clock_adjtime, sys_clock_adjtime32, sys_clock_adjtime)
722+#endif
685723 #define __NR_syncfs 267
686724 __SYSCALL(__NR_syncfs, sys_syncfs)
687725 #define __NR_setns 268
@@ -734,8 +772,10 @@ __SYSCALL(__NR_pkey_alloc, sys_pkey_alloc) · 46 unmodified lines
734772 __SYSCALL(__NR_pkey_free, sys_pkey_free)
735773 #define __NR_statx 291
736774 __SYSCALL(__NR_statx, sys_statx)
775+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
737776 #define __NR_io_pgetevents 292
738777 __SC_COMP_3264(__NR_io_pgetevents, sys_io_pgetevents_time32, sys_io_pgetevents, compat_sys_io_pgetevents)
778+#endif
739779 #define __NR_rseq 293
740780 __SYSCALL(__NR_rseq, sys_rseq)
741781 #define __NR_kexec_file_load 294
scripts/checksyscalls.sh+12−3
@@ -30,12 +30,14 @@ cat << EOF · 29 unmodified lines
3030 #define __IGNORE_readlink /* readlinkat */
3131 #define __IGNORE_symlink /* symlinkat */
3232 #define __IGNORE_utimes /* futimesat */
33−#if BITS_PER_LONG == 64
3433 #define __IGNORE_stat /* fstatat */
3534 #define __IGNORE_lstat /* fstatat */
36−#else
3735 #define __IGNORE_stat64 /* fstatat64 */
3836 #define __IGNORE_lstat64 /* fstatat64 */
37+
38+#ifndef __ARCH_WANT_SET_GET_RLIMIT
39+#define __IGNORE_getrlimit /* getrlimit */
40+#define __IGNORE_setrlimit /* setrlimit */
3941 #endif
4042
4143 /* Missing flags argument */
@@ -133,11 +135,18 @@ cat << EOF · 91 unmodified lines
133135 #define __IGNORE_io_pgetevents
134136 #define __IGNORE_recvmmsg
135137 #define __IGNORE_mq_timedsend
136−#define __IGNORE_mq_timedreceiv
138+#define __IGNORE_mq_timedreceive
137139 #define __IGNORE_semtimedop
138140 #define __IGNORE_rt_sigtimedwait
139141 #define __IGNORE_futex
140142 #define __IGNORE_sched_rr_get_interval
143+#define __IGNORE_gettimeofday
144+#define __IGNORE_settimeofday
145+#define __IGNORE_wait4
146+#define __IGNORE_adjtimex
147+#define __IGNORE_nanosleep
148+#define __IGNORE_io_getevents
149+#define __IGNORE_recvmmsg
141150 #endif
142151
143152 /* i386-specific or historical system calls */