diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2007-10-12 14:11:40 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-11-16 08:22:58 -0800 |
commit | 418db1544b43f855ff2335158c700e2da08cbc3f (patch) | |
tree | efe6cdeac921afd7c43824f4fe9f15e644ab4c50 | |
parent | edf06ad73aa3054aec42e1c27faf3ab4b497a1d3 (diff) | |
download | lwn-418db1544b43f855ff2335158c700e2da08cbc3f.tar.gz lwn-418db1544b43f855ff2335158c700e2da08cbc3f.zip |
xen: fix incorrect vcpu_register_vcpu_info hypercall argument
patch e3d2697669abbe26c08dc9b95e2a71c634d096ed in mainline.
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.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | arch/i386/xen/enlighten.c | 2 | ||||
-rw-r--r-- | include/xen/interface/vcpu.h | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/i386/xen/enlighten.c b/arch/i386/xen/enlighten.c index 3a611842f4b4..1ba2408dacb0 100644 --- a/arch/i386/xen/enlighten.c +++ b/arch/i386/xen/enlighten.c @@ -116,7 +116,7 @@ static void __init xen_vcpu_setup(int cpu) info.mfn = virt_to_mfn(vcpup); info.offset = offset_in_page(vcpup); - printk(KERN_DEBUG "trying to map vcpu_info %d at %p, mfn %x, offset %d\n", + printk(KERN_DEBUG "trying to map vcpu_info %d at %p, mfn %llx, offset %d\n", cpu, vcpup, info.mfn, info.offset); /* 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 { */ #define VCPUOP_register_vcpu_info 10 /* arg == struct vcpu_info */ struct vcpu_register_vcpu_info { - uint32_t mfn; /* mfn of page to place vcpu_info */ - uint32_t offset; /* offset within page */ + uint64_t mfn; /* mfn of page to place vcpu_info */ + uint32_t offset; /* offset within page */ + uint32_t rsvd; /* unused */ }; #endif /* __XEN_PUBLIC_VCPU_H__ */ |