timekeeping: Fix 1ns/tick drift with GENERIC_TIME_VSYSCALL_OLD
authorThomas Graziadei <thomas.graziadei@omicronenergy.com>
Tue, 31 May 2016 13:06:06 +0000 (15:06 +0200)
committerJohn Stultz <john.stultz@linaro.org>
Mon, 20 Jun 2016 19:46:45 +0000 (12:46 -0700)
commit0209b937569a133dedfe930cdfff3a0d1d68c9e9
treea35461164f667e343c98731f7f781d3e0b422890
parent0fb71d340d355156818bb53eb36ae79a3f88bda9
timekeeping: Fix 1ns/tick drift with GENERIC_TIME_VSYSCALL_OLD

The user notices the problem in a raw and real time drift, calling
clock_gettime with CLOCK_REALTIME / CLOCK_MONOTONIC_RAW on a system
with no ntp correction taking place (no ntpd or ptp stuff running).

The problem is, that old_vsyscall_fixup adds an extra 1ns even though
xtime_nsec is already held in full nsecs and the remainder in this
case is 0. Do the rounding up buisness only if needed.

Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Thomas Graziadei <thomas.graziadei@omicronenergy.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
kernel/time/timekeeping.c