Re: [Y2038] [PATCH 2/2] alpha: osf_sys.c: use timespec64 where appropriate

From: Arnd Bergmann
Date: Wed Nov 08 2017 - 09:54:21 EST


On Wed, Nov 8, 2017 at 1:22 AM, Ben Hutchings
<ben.hutchings@xxxxxxxxxxxxxxx> wrote:
> On Tue, 2017-11-07 at 15:09 +0100, Arnd Bergmann wrote:
>> Some of the syscall helper functions (do_utimes, poll_select_set_timeout,
>> core_sys_select) have changed over the past year or two to use
>> 'timespec64' pointers rather than 'timespec'. This was fine on alpha,
>> since 64-bit architectures treat the two as the same type.
>>
>> However, I'd like to change that behavior and make 'timespec64' a proper
>> type of its own even on 64-bit architectures, and that will introduce
>> harmless type mismatch warnings here.
>>
>> Also, I'm trying to kill off the do_gettimeofday() helper in favor of
>> ktime_get() and related interfaces throughout the kernel.
> [...]
>> @@ -1004,9 +1013,10 @@ SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv,
>> struct timezone __user *, tz)
>> {
>> if (tv) {
>> - struct timeval ktv;
>> - do_gettimeofday(&ktv);
>> - if (put_tv32(tv, &ktv))
>> + struct timespec64 kts;
>> +
>> + ktime_get_ts64(&kts);
> [...]
>
> But this syscall is supposed to use the realtime clock, no? It seems
> like the correct substitute here is getnstimeofday64() (as the kernel-
> doc comment for do_gettimeofday() *almost* says).

It should be ktime_get_real_ts64(), thanks for noticing my mistake.

ktime_get_real_ts64() is the same as getnstimeofday64(), but I'm
trying to use the ktime_get* naming where possible.

Arnd