From: Paolo Bonzini Date: Mon, 25 Jun 2018 12:04:37 +0000 (+0200) Subject: KVM: VMX: support MSR_IA32_ARCH_CAPABILITIES as a feature MSR X-Git-Tag: v4.1.12-124.31.3~612 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=2c9e90e967d5225c3762600bfdf82f8e1202d0c9;p=users%2Fjedix%2Flinux-maple.git KVM: VMX: support MSR_IA32_ARCH_CAPABILITIES as a feature MSR This lets userspace read the MSR_IA32_ARCH_CAPABILITIES and check that all requested features are available on the host. Signed-off-by: Paolo Bonzini Orabug: 28220625 CVE: CVE-2018-3646 (cherry picked from commit cd28325249a1ca0d771557ce823e0308ad629f98) Signed-off-by: Mihai Carabas Reviewed-by: Darren Kenny Reviewed-by: Boris Ostrovsky Conflicts: arch/x86/kvm/x86.c Contextual: different content --- diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 28265fb63571..039ea0392285 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -970,6 +970,7 @@ static const u32 emulated_msrs[] = { * can be used by a hypervisor to validate requested CPU features. */ static u32 msr_based_features[] = { + MSR_IA32_ARCH_CAPABILITIES, }; static unsigned int num_msr_based_features; @@ -977,6 +978,9 @@ static unsigned int num_msr_based_features; static int kvm_get_msr_feature(struct kvm_msr_entry *msr) { switch (msr->index) { + case MSR_IA32_ARCH_CAPABILITIES: + rdmsrl_safe(msr->index, &msr->data); + break; default: if (kvm_x86_ops->get_msr_feature(msr)) return 1;