32 lines
1.1 KiB
Diff
32 lines
1.1 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Maxim Levitsky <mlevitsk@redhat.com>
|
||
|
Date: Tue, 21 Jun 2022 18:08:52 +0300
|
||
|
Subject: [PATCH] KVM: x86: emulator: em_sysexit should update ctxt->mode
|
||
|
|
||
|
This is one of the instructions that can change the
|
||
|
processor mode.
|
||
|
|
||
|
Note that this is likely a benign bug, because the only problematic
|
||
|
mode change is from 32 bit to 64 bit which can lead to truncation of RIP,
|
||
|
and it is not possible to do with sysexit,
|
||
|
since sysexit running in 32 bit mode will be limited to 32 bit version.
|
||
|
|
||
|
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
|
||
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||
|
---
|
||
|
arch/x86/kvm/emulate.c | 1 +
|
||
|
1 file changed, 1 insertion(+)
|
||
|
|
||
|
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
|
||
|
index 318a78379ca6..35b12692739c 100644
|
||
|
--- a/arch/x86/kvm/emulate.c
|
||
|
+++ b/arch/x86/kvm/emulate.c
|
||
|
@@ -2862,6 +2862,7 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt)
|
||
|
ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS);
|
||
|
|
||
|
ctxt->_eip = rdx;
|
||
|
+ ctxt->mode = usermode;
|
||
|
*reg_write(ctxt, VCPU_REGS_RSP) = rcx;
|
||
|
|
||
|
return X86EMUL_CONTINUE;
|