Commit 38827dbd authored by Nadav Amit's avatar Nadav Amit Committed by Paolo Bonzini

KVM: x86: Do not update EFLAGS on faulting emulation

If the emulation ends in fault, eflags should not be updated.  However, several
instruction emulations (actually all the fastops) currently update eflags, if
the fault was detected afterwards (e.g., #PF during writeback).
Signed-off-by: default avatarNadav Amit <namit@cs.technion.ac.il>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 9d88fca7
...@@ -5360,7 +5360,9 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, ...@@ -5360,7 +5360,9 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu,
kvm_rip_write(vcpu, ctxt->eip); kvm_rip_write(vcpu, ctxt->eip);
if (r == EMULATE_DONE) if (r == EMULATE_DONE)
kvm_vcpu_check_singlestep(vcpu, rflags, &r); kvm_vcpu_check_singlestep(vcpu, rflags, &r);
__kvm_set_rflags(vcpu, ctxt->eflags); if (!ctxt->have_exception ||
exception_type(ctxt->exception.vector) == EXCPT_TRAP)
__kvm_set_rflags(vcpu, ctxt->eflags);
/* /*
* For STI, interrupts are shadowed; so KVM_REQ_EVENT will * For STI, interrupts are shadowed; so KVM_REQ_EVENT will
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment