Commit 709087ca authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] Erronous use of tick_usec in do_gettimeofday

From: Joe Korty <joe.korty@ccur.com>

do_gettimeofday() is using tick_usec which is defined in terms of USER_HZ
not HZ.
parent c5b971d7
...@@ -95,7 +95,7 @@ void do_gettimeofday(struct timeval *tv) ...@@ -95,7 +95,7 @@ void do_gettimeofday(struct timeval *tv)
{ {
unsigned long seq; unsigned long seq;
unsigned long usec, sec; unsigned long usec, sec;
unsigned long max_ntp_tick = tick_usec - tickadj; unsigned long max_ntp_tick;
do { do {
unsigned long lost; unsigned long lost;
...@@ -111,13 +111,14 @@ void do_gettimeofday(struct timeval *tv) ...@@ -111,13 +111,14 @@ void do_gettimeofday(struct timeval *tv)
* Better to lose some accuracy than have time go backwards.. * Better to lose some accuracy than have time go backwards..
*/ */
if (unlikely(time_adjust < 0)) { if (unlikely(time_adjust < 0)) {
max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj;
usec = min(usec, max_ntp_tick); usec = min(usec, max_ntp_tick);
if (lost) if (lost)
usec += lost * max_ntp_tick; usec += lost * max_ntp_tick;
} }
else if (unlikely(lost)) else if (unlikely(lost))
usec += lost * tick_usec; usec += lost * (USEC_PER_SEC / HZ);
sec = xtime.tv_sec; sec = xtime.tv_sec;
usec += (xtime.tv_nsec / 1000); usec += (xtime.tv_nsec / 1000);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment