mirror of https://gitee.com/openkylin/linux.git
KVM: x86 emulator: disable writeback for TEST
The TEST instruction doesn't write its destination operand. This could cause problems if an MMIO register was accessed using the TEST instruction. Recently Windows XP was observed to use TEST against the APIC ICR; this can cause spurious IPIs. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
c61fa9d63b
commit
caa8a168e3
|
@ -1670,6 +1670,8 @@ static int em_grp3(struct x86_emulate_ctxt *ctxt)
|
|||
switch (ctxt->modrm_reg) {
|
||||
case 0 ... 1: /* test */
|
||||
emulate_2op_SrcV(ctxt, "test");
|
||||
/* Disable writeback. */
|
||||
ctxt->dst.type = OP_NONE;
|
||||
break;
|
||||
case 2: /* not */
|
||||
ctxt->dst.val = ~ctxt->dst.val;
|
||||
|
@ -2513,6 +2515,8 @@ static int em_cmp(struct x86_emulate_ctxt *ctxt)
|
|||
static int em_test(struct x86_emulate_ctxt *ctxt)
|
||||
{
|
||||
emulate_2op_SrcV(ctxt, "test");
|
||||
/* Disable writeback. */
|
||||
ctxt->dst.type = OP_NONE;
|
||||
return X86EMUL_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue