diff options
author | Jeremy Fitzhardinge <jeremy@xensource.com> | 2007-10-16 14:51:31 -0400 |
---|---|---|
committer | Jeremy Fitzhardinge <jeremy@goop.org> | 2007-10-16 14:51:31 -0400 |
commit | e3d2697669abbe26c08dc9b95e2a71c634d096ed (patch) | |
tree | a253ae576a5820adfdaa59ee3b95ea0dd34e354d | |
parent | fb1d84043ca73212b08ff57608f51b372529e6d6 (diff) |
xen: fix incorrect vcpu_register_vcpu_info hypercall argument
The kernel's copy of struct vcpu_register_vcpu_info was out of date,
at best causing the hypercall to fail and the guest kernel to fall
back to the old mechanism, or worse, causing random memory corruption.
[ Stable folks: applies to 2.6.23 ]
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Stable Kernel <stable@kernel.org>
Cc: Morten =?utf-8?q?B=C3=B8geskov?= <xen-users@morten.bogeskov.dk>
Cc: Mark Williamson <mark.williamson@cl.cam.ac.uk>
-rw-r--r-- | arch/x86/xen/enlighten.c | 2 | ||||
-rw-r--r-- | include/xen/interface/vcpu.h | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index bc7bf5f8d077..c89e5b407f90 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -113,7 +113,7 @@ static void __init xen_vcpu_setup(int cpu) | |||
113 | info.mfn = virt_to_mfn(vcpup); | 113 | info.mfn = virt_to_mfn(vcpup); |
114 | info.offset = offset_in_page(vcpup); | 114 | info.offset = offset_in_page(vcpup); |
115 | 115 | ||
116 | printk(KERN_DEBUG "trying to map vcpu_info %d at %p, mfn %x, offset %d\n", | 116 | printk(KERN_DEBUG "trying to map vcpu_info %d at %p, mfn %llx, offset %d\n", |
117 | cpu, vcpup, info.mfn, info.offset); | 117 | cpu, vcpup, info.mfn, info.offset); |
118 | 118 | ||
119 | /* Check to see if the hypervisor will put the vcpu_info | 119 | /* Check to see if the hypervisor will put the vcpu_info |
diff --git a/include/xen/interface/vcpu.h b/include/xen/interface/vcpu.h index ff61ea365997..b05d8a6d9143 100644 --- a/include/xen/interface/vcpu.h +++ b/include/xen/interface/vcpu.h | |||
@@ -160,8 +160,9 @@ struct vcpu_set_singleshot_timer { | |||
160 | */ | 160 | */ |
161 | #define VCPUOP_register_vcpu_info 10 /* arg == struct vcpu_info */ | 161 | #define VCPUOP_register_vcpu_info 10 /* arg == struct vcpu_info */ |
162 | struct vcpu_register_vcpu_info { | 162 | struct vcpu_register_vcpu_info { |
163 | uint32_t mfn; /* mfn of page to place vcpu_info */ | 163 | uint64_t mfn; /* mfn of page to place vcpu_info */ |
164 | uint32_t offset; /* offset within page */ | 164 | uint32_t offset; /* offset within page */ |
165 | uint32_t rsvd; /* unused */ | ||
165 | }; | 166 | }; |
166 | 167 | ||
167 | #endif /* __XEN_PUBLIC_VCPU_H__ */ | 168 | #endif /* __XEN_PUBLIC_VCPU_H__ */ |