]> git.proxmox.com Git - pve-kernel.git/blame - patches/kernel/0012-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
rebase patches on top of Ubuntu-4.13.0-43.48
[pve-kernel.git] / patches / kernel / 0012-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
CommitLineData
035dbe67
FG
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Andrew Honig <ahonig@google.com>
3Date: Wed, 10 Jan 2018 10:12:03 -0800
4Subject: [PATCH] KVM: x86: Add memory barrier on vmcs field lookup
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 75f139aaf896d6fdeec2e468ddfa4b2fe469bf40 upstream.
10
11This adds a memory barrier when performing a lookup into
12the vmcs_field_to_offset_table. This is related to
13CVE-2017-5753.
14
15Signed-off-by: Andrew Honig <ahonig@google.com>
16Reviewed-by: Jim Mattson <jmattson@google.com>
17Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
20---
21 arch/x86/kvm/vmx.c | 12 ++++++++++--
22 1 file changed, 10 insertions(+), 2 deletions(-)
23
24diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
1f1e1833 25index 0510bc11beb2..c79de3ac9d49 100644
035dbe67
FG
26--- a/arch/x86/kvm/vmx.c
27+++ b/arch/x86/kvm/vmx.c
3adc5321 28@@ -883,8 +883,16 @@ static inline short vmcs_field_to_offset(unsigned long field)
035dbe67
FG
29 {
30 BUILD_BUG_ON(ARRAY_SIZE(vmcs_field_to_offset_table) > SHRT_MAX);
31
32- if (field >= ARRAY_SIZE(vmcs_field_to_offset_table) ||
33- vmcs_field_to_offset_table[field] == 0)
34+ if (field >= ARRAY_SIZE(vmcs_field_to_offset_table))
35+ return -ENOENT;
36+
37+ /*
38+ * FIXME: Mitigation for CVE-2017-5753. To be replaced with a
39+ * generic mechanism.
40+ */
41+ asm("lfence");
42+
43+ if (vmcs_field_to_offset_table[field] == 0)
44 return -ENOENT;
45
46 return vmcs_field_to_offset_table[field];
47--
482.14.2
49