I messed up the $SUBJECT line on this one, new subject for reference On Sat, Feb 9, 2019 at 12:05 AM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > The following changes since commit 1c7fc5cbc33980acd13d668f1c8f0313d6ae9fd8: > > Linux 5.0-rc2 (2019-01-14 10:41:12 +1200) > > are available in the Git repository at: > > git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground.git > tags/y2038-new-syscalls > > for you to fetch changes up to 48166e6ea47d23984f0b481ca199250e1ce0730a: > > y2038: add 64-bit time_t syscalls to all 32-bit architectures > (2019-02-07 00:13:28 +0100) > > ---------------------------------------------------------------- > y2038: Add time64 system calls > > This series finally gets us to the point of having system calls with > 64-bit time_t on all architectures, after a long time of incremental > preparation patches. > > There was actually one conversion that I missed during the summer, > i.e. Deepa's timex series, which I now updated based the 5.0-rc1 changes > and review comments. > > The following system calls are now added on all 32-bit architectures > using the same system call numbers: > > 403 clock_gettime64 > 404 clock_settime64 > 405 clock_adjtime64 > 406 clock_getres_time64 > 407 clock_nanosleep_time64 > 408 timer_gettime64 > 409 timer_settime64 > 410 timerfd_gettime64 > 411 timerfd_settime64 > 412 utimensat_time64 > 413 pselect6_time64 > 414 ppoll_time64 > 416 io_pgetevents_time64 > 417 recvmmsg_time64 > 418 mq_timedsend_time64 > 419 mq_timedreceiv_time64 > 420 semtimedop_time64 > 421 rt_sigtimedwait_time64 > 422 futex_time64 > 423 sched_rr_get_interval_time64 > > Each one of these corresponds directly to an existing system call > that includes a 'struct timespec' argument, or a structure containing > a timespec or (in case of clock_adjtime) timeval. Not included here > are new versions of getitimer/setitimer and getrusage/waitid, which > are planned for the future but only needed to make a consistent API > rather than for correct operation beyond y2038. These four system > calls are based on 'timeval', and it has not been finally decided > what the replacement kernel interface will use instead. > > So far, I have done a lot of build testing across most architectures, > which has found a number of bugs. Runtime testing so far included > testing LTP on 32-bit ARM with the existing system calls, to ensure > we do not regress for existing binaries, and a test with a 32-bit > x86 build of LTP against a modified version of the musl C library > that has been adapted to the new system call interface [3]. > This library can be used for testing on all architectures supported > by musl-1.1.21, but it is not how the support is getting integrated > into the official musl release. Official musl support is planned > but will require more invasive changes to the library. > > Link: https://lore.kernel.org/lkml/20190110162435.309262-1-arnd@xxxxxxxx/T/ > Link: https://lore.kernel.org/lkml/20190118161835.2259170-1-arnd@xxxxxxxx/ > Link: https://git.linaro.org/people/arnd/musl-y2038.git/ [2] > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > > ---------------------------------------------------------------- > Arnd Bergmann (31): > s390: open-code s390_personality syscall > ipc: introduce ksys_ipc()/compat_ksys_ipc() for s390 > s390: use generic UID16 implementation > s390: autogenerate compat syscall wrappers > s390: remove compat_wrapper.c > ia64: add __NR_umount2 definition > ia64: add statx and io_pgetevents syscalls > ia64: assign syscall numbers for perf and seccomp > alpha: wire up io_pgetevents system call > alpha: update syscall macro definitions > ARM: add migrate_pages() system call > ARM: add kexec_file_load system call number > m68k: assign syscall number for seccomp > sh: remove duplicate unistd_32.h file > sh: add statx system call > sparc64: fix sparc_ipc type conversion > ipc: rename old-style shmctl/semctl/msgctl syscalls > arch: add split IPC system calls where needed > arch: add pkey and rseq syscall numbers everywhere > alpha: add standard statfs64/fstatfs64 syscalls > alpha: add generic get{eg,eu,g,p,u,pp}id() syscalls > syscalls: remove obsolete __IGNORE_ macros > time: make adjtime compat handling available for 32 bit > time: fix sys_timer_settime prototype > sparc64: add custom adjtimex/clock_adjtime functions > x86/x32: use time64 versions of sigtimedwait and recvmmsg > y2038: syscalls: rename y2038 compat syscalls > y2038: use time32 syscall names on 32-bit > y2038: remove struct definition redirects > y2038: rename old time and utime syscalls > y2038: add 64-bit time_t syscalls to all 32-bit architectures > > Deepa Dinamani (3): > time: Add struct __kernel_timex > timex: use __kernel_timex internally > timex: change syscalls to use struct __kernel_timex > > arch/Kconfig | 2 +- > arch/alpha/include/asm/unistd.h | 21 -- > arch/alpha/include/uapi/asm/unistd.h | 10 + > arch/alpha/kernel/osf_sys.c | 5 +- > arch/alpha/kernel/syscalls/syscall.tbl | 22 +- > arch/arm/include/asm/unistd.h | 5 +- > arch/arm/kernel/sys_oabi-compat.c | 8 +- > arch/arm/tools/syscall.tbl | 85 +++--- > arch/arm64/include/asm/unistd.h | 2 +- > arch/arm64/include/asm/unistd32.h | 99 +++++-- > arch/ia64/include/asm/unistd.h | 14 - > arch/ia64/include/uapi/asm/unistd.h | 2 + > arch/ia64/kernel/syscalls/syscall.tbl | 11 +- > arch/m68k/include/asm/unistd.h | 4 +- > arch/m68k/kernel/syscalls/syscall.tbl | 88 ++++-- > arch/microblaze/include/asm/unistd.h | 4 +- > arch/microblaze/kernel/syscalls/syscall.tbl | 83 +++--- > arch/mips/include/asm/unistd.h | 17 +- > arch/mips/kernel/syscalls/syscall_n32.tbl | 77 ++++-- > arch/mips/kernel/syscalls/syscall_n64.tbl | 7 +- > arch/mips/kernel/syscalls/syscall_o32.tbl | 85 ++++-- > arch/parisc/include/asm/unistd.h | 13 +- > arch/parisc/kernel/syscalls/syscall.tbl | 109 ++++++-- > arch/powerpc/include/asm/unistd.h | 8 +- > arch/powerpc/kernel/syscalls/syscall.tbl | 134 +++++++-- > arch/s390/Kconfig | 2 + > arch/s390/include/asm/syscall_wrapper.h | 135 ++++++++++ > arch/s390/include/asm/unistd.h | 7 +- > arch/s390/include/uapi/asm/posix_types.h | 6 + > arch/s390/kernel/Makefile | 2 +- > arch/s390/kernel/compat_linux.c | 235 +--------------- > arch/s390/kernel/compat_wrapper.c | 186 ------------- > arch/s390/kernel/entry.S | 4 +- > arch/s390/kernel/sys_s390.c | 16 +- > arch/s390/kernel/syscalls/syscall.tbl | 373 +++++++++++++------------ > arch/sh/include/asm/unistd.h | 4 +- > arch/sh/include/uapi/asm/unistd_32.h | 403 ---------------------------- > arch/sh/kernel/syscalls/syscall.tbl | 88 ++++-- > arch/sparc/include/asm/unistd.h | 13 +- > arch/sparc/kernel/sys_sparc_64.c | 61 ++++- > arch/sparc/kernel/syscalls/syscall.tbl | 116 ++++++-- > arch/x86/entry/syscalls/syscall_32.tbl | 85 ++++-- > arch/x86/entry/syscalls/syscall_64.tbl | 6 +- > arch/x86/include/asm/unistd.h | 8 +- > arch/xtensa/include/asm/unistd.h | 14 +- > arch/xtensa/kernel/syscalls/syscall.tbl | 78 ++++-- > drivers/ptp/ptp_clock.c | 2 +- > fs/aio.c | 10 +- > fs/select.c | 4 +- > fs/timerfd.c | 4 +- > fs/utimes.c | 10 +- > include/linux/compat.h | 104 +------ > include/linux/posix-clock.h | 2 +- > include/linux/syscalls.h | 72 ++++- > include/linux/time32.h | 32 ++- > include/linux/time64.h | 8 - > include/linux/timex.h | 4 +- > include/uapi/asm-generic/unistd.h | 103 ++++--- > include/uapi/linux/time.h | 4 - > include/uapi/linux/timex.h | 39 +++ > ipc/mqueue.c | 16 +- > ipc/msg.c | 39 ++- > ipc/sem.c | 41 ++- > ipc/shm.c | 40 ++- > ipc/syscall.c | 32 ++- > ipc/util.h | 21 +- > kernel/compat.c | 64 ----- > kernel/futex.c | 2 +- > kernel/sched/core.c | 5 +- > kernel/signal.c | 2 +- > kernel/sys_ni.c | 22 +- > kernel/time/hrtimer.c | 2 +- > kernel/time/ntp.c | 18 +- > kernel/time/ntp_internal.h | 2 +- > kernel/time/posix-clock.c | 2 +- > kernel/time/posix-stubs.c | 25 +- > kernel/time/posix-timers.c | 72 +++-- > kernel/time/posix-timers.h | 2 +- > kernel/time/time.c | 92 ++++++- > kernel/time/timekeeping.c | 4 +- > net/compat.c | 2 +- > scripts/checksyscalls.sh | 40 +++ > 82 files changed, 1870 insertions(+), 1830 deletions(-) > create mode 100644 arch/s390/include/asm/syscall_wrapper.h > delete mode 100644 arch/s390/kernel/compat_wrapper.c > delete mode 100644 arch/sh/include/uapi/asm/unistd_32.h