KVM: x86: Wrong operand size for far ret
authorNadav Amit <namit@cs.technion.ac.il>
Mon, 26 Jan 2015 07:32:22 +0000 (09:32 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 26 Jan 2015 11:14:25 +0000 (12:14 +0100)
Indeed, Intel SDM specifically states that for the RET instruction "In 64-bit
mode, the default operation size of this instruction is the stack-address size,
i.e. 64 bits."

However, experiments show this is not the case. Here is for example objdump of
small 64-bit asm:

  4004f1: ca 14 00              lret   $0x14
  4004f4: 48 cb                 lretq
  4004f6: 48 ca 14 00           lretq  $0x14

Therefore, remove the Stack flag from far-ret instructions.

Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/emulate.c

Simple merge