[PATCH] fix vsyscall settimeofday
I've only seen this on x86_64. The vsyscall state only gets updated when a timer interrupts comes in. So if the time is set long before the next timer, there will be a period when a gettimeofday() won't reflect the correct time. I added an explicit update_vsyscall() during the settimeofday(), that way the vsyscall state doesn't get stale. Signed-off-by: Daniel Walker <dwalker@mvista.com> Cc: Thomas Gleixner <tglx@linutronix.de> Acked-by: Ingo Molnar <mingo@elte.hu> Acked-by: John Stultz <johnstul@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7a434814c7
commit
90675a27fa
1 changed files with 2 additions and 0 deletions
|
@ -862,6 +862,8 @@ int do_settimeofday(struct timespec *tv)
|
||||||
clock->error = 0;
|
clock->error = 0;
|
||||||
ntp_clear();
|
ntp_clear();
|
||||||
|
|
||||||
|
update_vsyscall(&xtime, clock);
|
||||||
|
|
||||||
write_sequnlock_irqrestore(&xtime_lock, flags);
|
write_sequnlock_irqrestore(&xtime_lock, flags);
|
||||||
|
|
||||||
/* signal hrtimers about time change */
|
/* signal hrtimers about time change */
|
||||||
|
|
Loading…
Reference in a new issue