x86: pvclock: make sure rdtsc doesnt speculate out of region
authorMarcelo Tosatti <mtosatti@redhat.com>
Wed, 28 Nov 2012 01:28:49 +0000 (23:28 -0200)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 28 Nov 2012 01:29:06 +0000 (23:29 -0200)
Originally from Jeremy Fitzhardinge.

pvclock_get_time_values, which contains the memory barriers
will be removed by next patch.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kernel/pvclock.c

index 42eb330..12e47e2 100644 (file)
@@ -97,10 +97,10 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
 
        do {
                version = pvclock_get_time_values(&shadow, src);
-               barrier();
+               rdtsc_barrier();
                offset = pvclock_get_nsec_offset(&shadow);
                ret = shadow.system_timestamp + offset;
-               barrier();
+               rdtsc_barrier();
        } while (version != src->version);
 
        if ((valid_flags & PVCLOCK_TSC_STABLE_BIT) &&