y2038: rusage: use __kernel_old_timeval
authorArnd Bergmann <arnd@arndb.de>
Fri, 25 Oct 2019 20:46:48 +0000 (22:46 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 15 Nov 2019 13:38:29 +0000 (14:38 +0100)
commitbdd565f817a74b9e30edec108f7cb1dbc762b8a6
treece401e7b12bc0c3c77af23ba8e1fd18f223ee040
parent2a785996cc5e2fc1d1d29d196f530905f68d2dc2
y2038: rusage: use __kernel_old_timeval

There are two 'struct timeval' fields in 'struct rusage'.

Unfortunately the definition of timeval is now ambiguous when used in
user space with a libc that has a 64-bit time_t, and this also changes
the 'rusage' definition in user space in a way that is incompatible with
the system call interface.

While there is no good solution to avoid all ambiguity here, change
the definition in the kernel headers to be compatible with the kernel
ABI, using __kernel_old_timeval as an unambiguous base type.

In previous discussions, there was also a plan to add a replacement
for rusage based on 64-bit timestamps and nanosecond resolution,
i.e. 'struct __kernel_timespec'. I have patches for that as well,
if anyone thinks we should do that.

Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/alpha/kernel/osf_sys.c
include/uapi/linux/resource.h
kernel/sys.c