]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ntp: Correct TAI offset during leap second
authorRichard Cochran <richardcochran@gmail.com>
Tue, 17 Jul 2012 17:33:49 +0000 (13:33 -0400)
committerJoe Jin <joe.jin@oracle.com>
Thu, 6 Sep 2012 00:49:36 +0000 (08:49 +0800)
This is a backport of dd48d708ff3e917f6d6b6c2b696c3f18c019feed

When repeating a UTC time value during a leap second (when the UTC
time should be 23:59:60), the TAI timescale should not stop. The kernel
NTP code increments the TAI offset one second too late. This patch fixes
the issue by incrementing the offset during the leap second itself.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 96bab736bad82423c2b312d602689a9078481fa9)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
kernel/time/ntp.c

index 3d17ebd47fa252044b69a2b339e340148dcf9f44..17accdaec0613c4c7c9369b0dee8a71104157d64 100644 (file)
@@ -412,6 +412,7 @@ int second_overflow(unsigned long secs)
                if (secs % 86400 == 0) {
                        leap = -1;
                        time_state = TIME_OOP;
+                       time_tai++;
                        printk(KERN_NOTICE
                                "Clock: inserting leap second 23:59:60 UTC\n");
                }
@@ -426,7 +427,6 @@ int second_overflow(unsigned long secs)
                }
                break;
        case TIME_OOP:
-               time_tai++;
                time_state = TIME_WAIT;
                break;