@@ -2979,17 +2979,19 @@ special_insn:
c->dst.type = OP_NONE; /* Disable writeback. */
break;
case 0xfa: /* cli */
- if (emulator_bad_iopl(ctxt, ops))
+ if (emulator_bad_iopl(ctxt, ops)) {
emulate_gp(ctxt, 0);
- else {
+ goto done;
+ } else {
ctxt->eflags &= ~X86_EFLAGS_IF;
c->dst.type = OP_NONE; /* Disable writeback. */
}
break;
case 0xfb: /* sti */
- if (emulator_bad_iopl(ctxt, ops))
+ if (emulator_bad_iopl(ctxt, ops)) {
emulate_gp(ctxt, 0);
- else {
+ goto done;
+ } else {
ctxt->interruptibility = KVM_X86_SHADOW_INT_STI;
ctxt->eflags |= X86_EFLAGS_IF;
c->dst.type = OP_NONE; /* Disable writeback. */