Cannot_emulate includes "c->eip = saved_eip". So the execution of this after kvm_emulate_pio() is redundant. Let's remove this. Others are trivial cleanups. Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@xxxxxxxxxxxxx> --- arch/x86/kvm/emulate.c | 13 +++++-------- 1 files changed, 5 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 5b6794a..a27cc3d 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2344,19 +2344,16 @@ special_insn: case 0xef: /* out (e/r)ax,dx */ port = c->regs[VCPU_REGS_RDX]; io_dir_in = 0; - do_io: - if (!emulator_io_permited(ctxt, ops, port, - (c->d & ByteOp) ? 1 : c->op_bytes)) { + do_io: { + int len = (c->d & ByteOp) ? 1 : c->op_bytes; + if (!emulator_io_permited(ctxt, ops, port, len)) { kvm_inject_gp(ctxt->vcpu, 0); goto done; } - if (kvm_emulate_pio(ctxt->vcpu, io_dir_in, - (c->d & ByteOp) ? 1 : c->op_bytes, - port) != 0) { - c->eip = saved_eip; + if (kvm_emulate_pio(ctxt->vcpu, io_dir_in, len, port)) goto cannot_emulate; - } break; + } case 0xf4: /* hlt */ ctxt->vcpu->arch.halt_request = 1; break; -- 1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html