From 23a5c82d0da10d8ac54a81f78e761d994012e6fa Mon Sep 17 00:00:00 2001 From: Gleb Natapov Date: Thu, 15 Apr 2010 12:29:50 +0300 Subject: [PATCH] --- yaml --- r: 197749 b: refs/heads/master c: 19d04437267f00c7b50343513693b7a3174ff908 h: refs/heads/master i: 197747: c6c3fea37c1af8bb255c7613bfc24976e1b22e4d v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/emulate.c | 2 +- trunk/arch/x86/kvm/x86.c | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index c64253d4c50d..69471148d570 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5b7e0102ae744e9175b905f4267a81393bdb7a75 +refs/heads/master: 19d04437267f00c7b50343513693b7a3174ff908 diff --git a/trunk/arch/x86/kvm/emulate.c b/trunk/arch/x86/kvm/emulate.c index 585d0ef4a5f6..5ac0bb465ed6 100644 --- a/trunk/arch/x86/kvm/emulate.c +++ b/trunk/arch/x86/kvm/emulate.c @@ -2453,7 +2453,7 @@ int emulator_task_switch(struct x86_emulate_ctxt *ctxt, rc = writeback(ctxt, ops); } - return rc; + return (rc == X86EMUL_UNHANDLEABLE) ? -1 : 0; } static void string_addr_inc(struct x86_emulate_ctxt *ctxt, unsigned long base, diff --git a/trunk/arch/x86/kvm/x86.c b/trunk/arch/x86/kvm/x86.c index 58a295c6bf62..30efeead4511 100644 --- a/trunk/arch/x86/kvm/x86.c +++ b/trunk/arch/x86/kvm/x86.c @@ -4800,10 +4800,11 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason, tss_selector, reason, has_error_code, error_code); - if (ret == X86EMUL_CONTINUE) - kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); + if (ret) + return EMULATE_FAIL; - return (ret != X86EMUL_CONTINUE); + kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); + return EMULATE_DONE; } EXPORT_SYMBOL_GPL(kvm_task_switch);