forked from Minki/linux
KVM: x86: Set kvm_x86_ops only after ->hardware_setup() completes
Set kvm_x86_ops with the vendor's ops only after ->hardware_setup() completes to "prevent" using kvm_x86_ops before they are ready, i.e. to generate a null pointer fault instead of silently consuming unconfigured state. An alternative implementation would be to have ->hardware_setup() return the vendor's ops, but that would require non-trivial refactoring, and would arguably result in less readable code, e.g. ->hardware_setup() would need to use ERR_PTR() in multiple locations, and each vendor's declaration of the runtime ops would be less obvious. No functional change intended. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Message-Id: <20200321202603.19355-6-sean.j.christopherson@intel.com> Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
72b0eaa946
commit
69c6f69aa3
@ -7359,8 +7359,6 @@ int kvm_arch_init(void *opaque)
|
||||
if (r)
|
||||
goto out_free_percpu;
|
||||
|
||||
kvm_x86_ops = ops->runtime_ops;
|
||||
|
||||
kvm_mmu_set_mask_ptes(PT_USER_MASK, PT_ACCESSED_MASK,
|
||||
PT_DIRTY_MASK, PT64_NX_MASK, 0,
|
||||
PT_PRESENT_MASK, 0, sme_me_mask);
|
||||
@ -9640,6 +9638,8 @@ int kvm_arch_hardware_setup(void *opaque)
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
kvm_x86_ops = ops->runtime_ops;
|
||||
|
||||
if (!kvm_cpu_cap_has(X86_FEATURE_XSAVES))
|
||||
supported_xss = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user