|| ||Thomas Gleixner <tglx-AT-linutronix.de> |
|| ||Tobias Waldekranz <tobias-AT-waldekranz.com> |
|| ||Re: [PATCH] timekeeping: handle epoch roll-over (2038) on 32-bit systems |
|| ||Mon, 3 Jun 2013 16:34:25 +0200 (CEST)|
|| ||LKML <linux-kernel-AT-vger.kernel.org>, John Stultz <john.stultz-AT-linaro.org>, Ingo Molnar <mingo-AT-kernel.org>, Peter Zijlstra <peterz-AT-infradead.org>|
|| ||Article, Thread
B1;2601;0cOn Mon, 3 Jun 2013, Tobias Waldekranz wrote:
> In ktime_get_update_offsets, calculate the current time in the same
> way as in ktime_get.
> On 32-bit systems, the current time is truncated via the call to
> ktime_set, the following subtraction of offs_real will result in an
> inaccurate time when the current number of seconds since epoch can no
> longer fit in 31-bits (2038-01-19 03:14:07 UTC). This will send
> hrtimer_interrupt into an infinite loop on some architectures (arm),
> or emit an oops on others(x86).
If we really want to survive 2038, then we need to get rid of the
timespec based representation of time in the kernel alltogether and
switch all related code over to a scalar nsec 64bit storage.
Just "fixing" some random parts of the code in a "make it work
somehow" way is a pointless exercise IMO.
We already had long discussions about how the timekeeping code should
be restructured to address that and other problems at least on the
kernel side and switching everything to scalar storage is definitely
the way to go.
Though even if we fix that we still need to twist our brains around
the timespec/timeval based user space interfaces. That's going to be
the way more interesting challenge.
to post comments)