f6df304f26
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
35 lines
1.2 KiB
Diff
35 lines
1.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Maxim Levitsky <mlevitsk@redhat.com>
|
|
Date: Tue, 21 Jun 2022 18:08:55 +0300
|
|
Subject: [PATCH] KVM: x86: emulator: update the emulation mode after rsm
|
|
|
|
This ensures that RIP will be correctly written back,
|
|
because the RSM instruction can switch the CPU mode from
|
|
32 bit (or less) to 64 bit.
|
|
|
|
This fixes a guest crash in case the #SMI is received
|
|
while the guest runs a code from an address > 32 bit.
|
|
|
|
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
---
|
|
arch/x86/kvm/emulate.c | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
|
|
index 9e305e0cd815..c582639ea2b4 100644
|
|
--- a/arch/x86/kvm/emulate.c
|
|
+++ b/arch/x86/kvm/emulate.c
|
|
@@ -2635,6 +2635,11 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
|
|
if (ret != X86EMUL_CONTINUE)
|
|
goto emulate_shutdown;
|
|
|
|
+
|
|
+ ret = update_emulation_mode(ctxt);
|
|
+ if (ret != X86EMUL_CONTINUE)
|
|
+ goto emulate_shutdown;
|
|
+
|
|
/*
|
|
* Note, the ctxt->ops callbacks are responsible for handling side
|
|
* effects when writing MSRs and CRs, e.g. MMU context resets, CPUID
|