]> git.proxmox.com Git - pve-kernel.git/blob - patches/kernel/0008-KVM-x86-emulator-update-the-emulation-mode-after-rsm.patch
prepare for 6.2 release
[pve-kernel.git] / patches / kernel / 0008-KVM-x86-emulator-update-the-emulation-mode-after-rsm.patch
1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Maxim Levitsky <mlevitsk@redhat.com>
3 Date: Wed, 3 Aug 2022 18:50:02 +0300
4 Subject: [PATCH] KVM: x86: emulator: update the emulation mode after rsm
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 This ensures that RIP will be correctly written back,
10 because the RSM instruction can switch the CPU mode from
11 32 bit (or less) to 64 bit.
12
13 This fixes a guest crash in case the #SMI is received
14 while the guest runs a code from an address > 32 bit.
15
16 Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
17 Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
18 Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
19 ---
20 arch/x86/kvm/emulate.c | 5 +++++
21 1 file changed, 5 insertions(+)
22
23 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
24 index 4a43261d25a2..4f7f5117ec7a 100644
25 --- a/arch/x86/kvm/emulate.c
26 +++ b/arch/x86/kvm/emulate.c
27 @@ -2654,6 +2654,11 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
28 if (ret != X86EMUL_CONTINUE)
29 goto emulate_shutdown;
30
31 +
32 + ret = emulator_recalc_and_set_mode(ctxt);
33 + if (ret != X86EMUL_CONTINUE)
34 + goto emulate_shutdown;
35 +
36 /*
37 * Note, the ctxt->ops callbacks are responsible for handling side
38 * effects when writing MSRs and CRs, e.g. MMU context resets, CPUID