diff options
author | Petr Tesarik <ptesarik@suse.cz> | 2009-05-25 05:02:02 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-05-28 08:15:54 -0400 |
commit | 7d96fd41cadc55f4e00231c8c71b8e25c779f122 (patch) | |
tree | a52e633f9f7b33f8bd4dead21c22d54f94955293 /arch/x86/kernel/vsyscall_64.c | |
parent | cd86a536c81e9300d984327517548ca0652eebf9 (diff) |
x86: move rdtsc_barrier() into the TSC vread method
The *fence instructions were moved to vsyscall_64.c by commit
cb9e35dce94a1b9c59d46224e8a94377d673e204. But this breaks the
vDSO, because vread methods are also called from there.
Besides, the synchronization might be unnecessary for other
time sources than TSC.
[ Impact: fix potential time warp in VDSO ]
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
LKML-Reference: <9d0ea9ea0f866bdc1f4d76831221ae117f11ea67.1243241859.git.ptesarik@suse.cz>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@kernel.org>
Diffstat (limited to 'arch/x86/kernel/vsyscall_64.c')
-rw-r--r-- | arch/x86/kernel/vsyscall_64.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c index 44153afc9067..25ee06a80aad 100644 --- a/arch/x86/kernel/vsyscall_64.c +++ b/arch/x86/kernel/vsyscall_64.c | |||
@@ -132,15 +132,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv) | |||
132 | return; | 132 | return; |
133 | } | 133 | } |
134 | 134 | ||
135 | /* | ||
136 | * Surround the RDTSC by barriers, to make sure it's not | ||
137 | * speculated to outside the seqlock critical section and | ||
138 | * does not cause time warps: | ||
139 | */ | ||
140 | rdtsc_barrier(); | ||
141 | now = vread(); | 135 | now = vread(); |
142 | rdtsc_barrier(); | ||
143 | |||
144 | base = __vsyscall_gtod_data.clock.cycle_last; | 136 | base = __vsyscall_gtod_data.clock.cycle_last; |
145 | mask = __vsyscall_gtod_data.clock.mask; | 137 | mask = __vsyscall_gtod_data.clock.mask; |
146 | mult = __vsyscall_gtod_data.clock.mult; | 138 | mult = __vsyscall_gtod_data.clock.mult; |