Messages in this thread Patch in this message | | | Date | Wed, 16 Nov 2016 15:42:15 -0500 (EST) | From | Paolo Bonzini <> | Subject | Re: [PATCH v11 7/7] KVM: x86: virtualize cpuid faulting |
| |
> On Fri, Nov 11, 2016 at 12:54 PM, Nadav Amit <nadav.amit@gmail.com> wrote: > > > >> On Nov 10, 2016, at 3:40 PM, Kyle Huey <me@kylehuey.com> wrote: > >> > >> Hardware support for faulting on the cpuid instruction is not required to > >> emulate it, because cpuid triggers a VM exit anyways. KVM handles the > >> relevant > >> MSRs (MSR_PLATFORM_INFO and MSR_MISC_FEATURES_ENABLE) and upon a > >> cpuid-induced VM exit checks the cpuid faulting state and the CPL. > >> kvm_require_cpl is even kind enough to inject the GP fault for us. > > > > I think that for consistency you should also revise em_cpuid() of KVM > > instruction emulator. Otherwise it may be a potential security > > hazard (as far fetched as it currently seems). > > Hmm, ok. Do you know how I can test this code path?
Try this patch (untested!)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 5382b82462fc..06d940a7c9fa 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -5868,8 +5868,7 @@ static void vmx_set_dr7(struct kvm_vcpu *vcpu, unsigned long val) static int handle_cpuid(struct kvm_vcpu *vcpu) { - kvm_emulate_cpuid(vcpu); - return 1; + return emulate_instruction(vcpu, 0) == EMULATE_DONE; } static int handle_rdmsr(struct kvm_vcpu *vcpu) Paolo
| |