On Fri, Nov 08, 2019 at 10:12:10PM +0100, Arnd Bergmann wrote:
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.
Signed-off-by: Arnd Bergmann arnd@arndb.de
Question: should we also rename 'struct rusage' into 'struct __kernel_rusage' here, to make them completely unambiguous?
The patch looks ok to me. I must confess I looked into rusage long ago so __kernel_timespec type used in uapi made me nervious at first, but then i found that we've this type defined in time_types.h uapi so userspace should be safe. I also like the idea of __kernel_rusage but definitely on top of the series.
Reviewed-by: Cyrill Gorcunov gorcunov@gmail.com