KVM: x86: Clear rflags.rf on emulated instructions
When an instruction is emulated RFLAGS.RF should be cleared. KVM previously did not do so. This patch clears RFLAGS.RF after interception is done. If a fault occurs during the instruction, RFLAGS.RF will be set by a previous patch. This patch does not handle the case of traps/interrupts during rep-strings. Traps are only expected to occur on debug watchpoints, and those are anyhow not handled by the emulator. Signed-off-by: Nadav Amit <namit@cs.technion.ac.il> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
163b135e7b
commit
4467c3f1ad
|
@ -4640,6 +4640,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
|
|||
/* All REP prefixes have the same first termination condition */
|
||||
if (address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) == 0) {
|
||||
ctxt->eip = ctxt->_eip;
|
||||
ctxt->eflags &= ~EFLG_RF;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
@ -4682,6 +4683,8 @@ special_insn:
|
|||
goto done;
|
||||
}
|
||||
|
||||
ctxt->eflags &= ~EFLG_RF;
|
||||
|
||||
if (ctxt->execute) {
|
||||
if (ctxt->d & Fastop) {
|
||||
void (*fop)(struct fastop *) = (void *)ctxt->execute;
|
||||
|
|
Loading…
Reference in New Issue