forked from Minki/linux
KVM: x86 emulator: fix cli/sti instruction emulation
If IOPL check fail, the cli/sti emulate GP and then we should skip writeback since the default write OP is OP_REG. Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
b16b2b7bb5
commit
07cbc6c185
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user