diff options
author | Tony Breeds <tony@bakeyournoodle.com> | 2007-10-18 06:04:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-18 17:37:20 -0400 |
commit | 2c6221483169ddd4c04797cd7296ed4fe52fcdd7 (patch) | |
tree | 1db73f0bf60b036abe995350637a9a3e916c0ec2 /include | |
parent | 6212e3a388fdda3f19fa660ef5a30edf54d1dcfd (diff) |
Fix discrepancy between VDSO based gettimeofday() and sys_gettimeofday().
On platforms that copy sys_tz into the vdso (currently only x86_64, soon to
include powerpc), it is possible for the vdso to get out of sync if a user
calls (admittedly unusual) settimeofday(NULL, ptr).
This patch adds a hook for architectures that set
CONFIG_GENERIC_TIME_VSYSCALL to ensure when sys_tz is updated they can also
updatee their copy in the vdso.
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Tony Luck <tony.luck@intel.com>
Acked-by: John Stultz <johnstul@us.ibm.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/clocksource.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 16ea3374dddf..107787aacb64 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
@@ -221,10 +221,15 @@ extern void clocksource_resume(void); | |||
221 | 221 | ||
222 | #ifdef CONFIG_GENERIC_TIME_VSYSCALL | 222 | #ifdef CONFIG_GENERIC_TIME_VSYSCALL |
223 | extern void update_vsyscall(struct timespec *ts, struct clocksource *c); | 223 | extern void update_vsyscall(struct timespec *ts, struct clocksource *c); |
224 | extern void update_vsyscall_tz(void); | ||
224 | #else | 225 | #else |
225 | static inline void update_vsyscall(struct timespec *ts, struct clocksource *c) | 226 | static inline void update_vsyscall(struct timespec *ts, struct clocksource *c) |
226 | { | 227 | { |
227 | } | 228 | } |
229 | |||
230 | static inline void update_vsyscall_tz(void) | ||
231 | { | ||
232 | } | ||
228 | #endif | 233 | #endif |
229 | 234 | ||
230 | #endif /* _LINUX_CLOCKSOURCE_H */ | 235 | #endif /* _LINUX_CLOCKSOURCE_H */ |