diff options
author | Peter Hurley <peter@hurleysoftware.com> | 2013-02-27 15:28:28 -0500 |
---|---|---|
committer | Gleb Natapov <gleb@redhat.com> | 2013-02-28 01:50:11 -0500 |
commit | 3d2a80a230250c2534ce5b17503670adaf1d7fff (patch) | |
tree | 2d52e8d1159051f0647afda8d889fd6645ff5cf2 /arch/x86 | |
parent | 2a7d2b96d5cba7568139d9ab157a0e97ab32440f (diff) |
x86/kvm: Fix pvclock vsyscall fixmap
The physical memory fixmapped for the pvclock clock_gettime vsyscall
was allocated, and thus is not a kernel symbol. __pa() is the proper
method to use in this case.
Fixes the crash below when booting a next-20130204+ smp guest on a
3.8-rc5+ KVM host.
[ 0.666410] udevd[97]: starting version 175
[ 0.674043] udevd[97]: udevd:[97]: segfault at ffffffffff5fd020
ip 00007fff069e277f sp 00007fff068c9ef8 error d
Acked-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/pvclock.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c index 85c39590c1a4..2cb9470ea85b 100644 --- a/arch/x86/kernel/pvclock.c +++ b/arch/x86/kernel/pvclock.c | |||
@@ -185,7 +185,7 @@ int __init pvclock_init_vsyscall(struct pvclock_vsyscall_time_info *i, | |||
185 | 185 | ||
186 | for (idx = 0; idx <= (PVCLOCK_FIXMAP_END-PVCLOCK_FIXMAP_BEGIN); idx++) { | 186 | for (idx = 0; idx <= (PVCLOCK_FIXMAP_END-PVCLOCK_FIXMAP_BEGIN); idx++) { |
187 | __set_fixmap(PVCLOCK_FIXMAP_BEGIN + idx, | 187 | __set_fixmap(PVCLOCK_FIXMAP_BEGIN + idx, |
188 | __pa_symbol(i) + (idx*PAGE_SIZE), | 188 | __pa(i) + (idx*PAGE_SIZE), |
189 | PAGE_KERNEL_VVAR); | 189 | PAGE_KERNEL_VVAR); |
190 | } | 190 | } |
191 | 191 | ||