Message ID | 1251702271-4797-1-git-send-email-glommer@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 08/31/2009 10:04 AM, Glauber Costa wrote: > The use of __pa() to calculate the address of a C-visible symbol > is wrong, and can lead to unpredictable results. See arch/x86/include/asm/page.h > for details. > > It should be replaced with __pa_symbol(), that does the correct math here, > by taking relocations into account. > Applied, thanks. I note that the changelog entry says nothing about what component is involved and what the effect of the bug is. This reduces its usefulness for someone looking over the log and trying to see if a particular bug is fixed.
diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c index 223af43..e5efcdc 100644 --- a/arch/x86/kernel/kvmclock.c +++ b/arch/x86/kernel/kvmclock.c @@ -50,8 +50,8 @@ static unsigned long kvm_get_wallclock(void) struct timespec ts; int low, high; - low = (int)__pa(&wall_clock); - high = ((u64)__pa(&wall_clock) >> 32); + low = (int)__pa_symbol(&wall_clock); + high = ((u64)__pa_symbol(&wall_clock) >> 32); native_write_msr(MSR_KVM_WALL_CLOCK, low, high); vcpu_time = &get_cpu_var(hv_clock);
The use of __pa() to calculate the address of a C-visible symbol is wrong, and can lead to unpredictable results. See arch/x86/include/asm/page.h for details. It should be replaced with __pa_symbol(), that does the correct math here, by taking relocations into account. Signed-off-by: Glauber Costa <glommer@redhat.com> --- arch/x86/kernel/kvmclock.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)