diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch deleted file mode 100644 index 9430b597..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 399e9dee4411858aa4eb8894f031ff68ab3b5e9f Mon Sep 17 00:00:00 2001 -From: Wanpeng Li <wanpeng.li@hotmail.com> -Date: Sun, 5 Nov 2017 16:54:47 -0800 -Subject: [PATCH 06/33] KVM: X86: Fix operand/address-size during instruction - decoding -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -[ Upstream commit 3853be2603191829b442b64dac6ae8ba0c027bf9 ] - -Pedro reported: - During tests that we conducted on KVM, we noticed that executing a "PUSH %ES" - instruction under KVM produces different results on both memory and the SP - register depending on whether EPT support is enabled. With EPT the SP is - reduced by 4 bytes (and the written value is 0-padded) but without EPT support - it is only reduced by 2 bytes. The difference can be observed when the CS.DB - field is 1 (32-bit) but not when it's 0 (16-bit). - -The internal segment descriptor cache exist even in real/vm8096 mode. The CS.D -also should be respected instead of just default operand/address-size/66H -prefix/67H prefix during instruction decoding. This patch fixes it by also -adjusting operand/address-size according to CS.D. - -Reported-by: Pedro Fonseca <pfonseca@cs.washington.edu> -Tested-by: Pedro Fonseca <pfonseca@cs.washington.edu> -Cc: Paolo Bonzini <pbonzini@redhat.com> -Cc: Radim Krčmář <rkrcmar@redhat.com> -Cc: Nadav Amit <nadav.amit@gmail.com> -Cc: Pedro Fonseca <pfonseca@cs.washington.edu> -Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com> -Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> -Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> -Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kvm/emulate.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 9f676ad..9984daf 100644 ---- a/arch/x86/kvm/emulate.c -+++ b/arch/x86/kvm/emulate.c -@@ -4971,6 +4971,8 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len) - bool op_prefix = false; - bool has_seg_override = false; - struct opcode opcode; -+ u16 dummy; -+ struct desc_struct desc; - - ctxt->memop.type = OP_NONE; - ctxt->memopp = NULL; -@@ -4989,6 +4991,11 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len) - switch (mode) { - case X86EMUL_MODE_REAL: - case X86EMUL_MODE_VM86: -+ def_op_bytes = def_ad_bytes = 2; -+ ctxt->ops->get_segment(ctxt, &dummy, &desc, NULL, VCPU_SREG_CS); -+ if (desc.d) -+ def_op_bytes = def_ad_bytes = 4; -+ break; - case X86EMUL_MODE_PROT16: - def_op_bytes = def_ad_bytes = 2; - break; --- -2.7.4 - |