From: Nadav Amit Date: Sun, 2 Nov 2014 09:54:53 +0000 (+0200) Subject: KVM: x86: Do not update EFLAGS on faulting emulation X-Git-Tag: v3.19-rc1~36^2~78 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=38827dbd3fb85a94a002fcf67b8735d5bc1a7e1a;p=~emulex%2Finfiniband.git 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: Nadav Amit Signed-off-by: Paolo Bonzini --- diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 641358865a0..da1591eeb47 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5360,7 +5360,9 @@ restart: kvm_rip_write(vcpu, ctxt->eip); if (r == EMULATE_DONE) 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