3ae8384f6f
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
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: Wed, 3 Aug 2022 18:50:00 +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 89b11e7dca8a..93349b54ef56 100644
|
|
--- a/arch/x86/kvm/emulate.c
|
|
+++ b/arch/x86/kvm/emulate.c
|
|
@@ -2875,6 +2875,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;
|