826eb0ff89
but allow discarding BTF information when loading modules, so that upgrades which are otherwise ABI compatible still work. this allows using BTF information when matching and available, while degrading gracefully if the currently running kernel is not identical to the one that module was built for. in case of a mismatch, the kernel will log a warning when loading the module, for example: Jan 30 13:57:58 test kernel: BPF: type_id=184 bits_offset=4096 Jan 30 13:57:58 test kernel: BPF: Jan 30 13:57:58 test kernel: BPF: Invalid name Jan 30 13:57:58 test kernel: BPF: Jan 30 13:57:58 test kernel: failed to validate module [bonding] BTF: -22 Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
39 lines
1.3 KiB
Diff
39 lines
1.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Maxim Levitsky <mlevitsk@redhat.com>
|
|
Date: Wed, 3 Aug 2022 18:50:02 +0300
|
|
Subject: [PATCH] KVM: x86: emulator: update the emulation mode after rsm
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
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>
|
|
Signed-off-by: Fabian Grünbichler <f.gruenbichler@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 4a43261d25a2..4f7f5117ec7a 100644
|
|
--- a/arch/x86/kvm/emulate.c
|
|
+++ b/arch/x86/kvm/emulate.c
|
|
@@ -2654,6 +2654,11 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt)
|
|
if (ret != X86EMUL_CONTINUE)
|
|
goto emulate_shutdown;
|
|
|
|
+
|
|
+ ret = emulator_recalc_and_set_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
|