From: Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
To: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Cc: kvm-devel <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: [patch] KVM: fix hypercall cache/decache
Date: Tue, 20 Mar 2007 09:54:27 +0100 [thread overview]
Message-ID: <20070320085427.GA21948@elte.hu> (raw)
Subject: [patch] KVM: fix hypercall cache/decache
From: Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
a recent change to kvm_hypercall() flipped around the order of
->cache_regs() and ->decache_regs(), but that is bogus and causes
ESP/RIP corruption: ->cache_regs() will 'cache' the CPU-side registers
into the vcpu structure, and ->decache_regs() will sync it back to the
CPU.
fix this by using the correct order again.
Signed-off-by: Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
---
drivers/kvm/kvm_main.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Index: linux/drivers/kvm/kvm_main.c
===================================================================
--- linux.orig/drivers/kvm/kvm_main.c
+++ linux/drivers/kvm/kvm_main.c
@@ -1177,7 +1177,7 @@ int kvm_hypercall(struct kvm_vcpu *vcpu,
{
unsigned long nr, a0, a1, a2, a3, a4, a5, ret;
- kvm_arch_ops->decache_regs(vcpu);
+ kvm_arch_ops->cache_regs(vcpu);
ret = -KVM_EINVAL;
#ifdef CONFIG_X86_64
if (is_long_mode(vcpu)) {
@@ -1204,7 +1204,8 @@ int kvm_hypercall(struct kvm_vcpu *vcpu,
;
}
vcpu->regs[VCPU_REGS_RAX] = ret;
- kvm_arch_ops->cache_regs(vcpu);
+ kvm_arch_ops->decache_regs(vcpu);
+
return 1;
}
EXPORT_SYMBOL_GPL(kvm_hypercall);
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
next reply other threads:[~2007-03-20 8:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-20 8:54 Ingo Molnar [this message]
[not found] ` <20070320085427.GA21948-X9Un+BFzKDI@public.gmane.org>
2007-03-20 9:21 ` [patch] KVM: fix hypercall cache/decache Avi Kivity
[not found] ` <45FFA790.7080007-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-03-20 9:25 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070320085427.GA21948@elte.hu \
--to=mingo-x9un+bfzkdi@public.gmane.org \
--cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox