diff options
-rw-r--r-- | arch/x86/kvm/emulate.c | 2 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 585d0ef4a5f6..5ac0bb465ed6 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c | |||
@@ -2453,7 +2453,7 @@ int emulator_task_switch(struct x86_emulate_ctxt *ctxt, | |||
2453 | rc = writeback(ctxt, ops); | 2453 | rc = writeback(ctxt, ops); |
2454 | } | 2454 | } |
2455 | 2455 | ||
2456 | return rc; | 2456 | return (rc == X86EMUL_UNHANDLEABLE) ? -1 : 0; |
2457 | } | 2457 | } |
2458 | 2458 | ||
2459 | static void string_addr_inc(struct x86_emulate_ctxt *ctxt, unsigned long base, | 2459 | static void string_addr_inc(struct x86_emulate_ctxt *ctxt, unsigned long base, |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 58a295c6bf62..30efeead4511 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -4800,10 +4800,11 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason, | |||
4800 | tss_selector, reason, has_error_code, | 4800 | tss_selector, reason, has_error_code, |
4801 | error_code); | 4801 | error_code); |
4802 | 4802 | ||
4803 | if (ret == X86EMUL_CONTINUE) | 4803 | if (ret) |
4804 | kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); | 4804 | return EMULATE_FAIL; |
4805 | 4805 | ||
4806 | return (ret != X86EMUL_CONTINUE); | 4806 | kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); |
4807 | return EMULATE_DONE; | ||
4807 | } | 4808 | } |
4808 | EXPORT_SYMBOL_GPL(kvm_task_switch); | 4809 | EXPORT_SYMBOL_GPL(kvm_task_switch); |
4809 | 4810 | ||