]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - arch/x86/kvm/svm.c
treewide: kmalloc() -> kmalloc_array()
[mirror_ubuntu-hirsute-kernel.git] / arch / x86 / kvm / svm.c
index 26110c202b19c44f6b52f4a105646b49ee7a23b5..e831e6d3b70e15b60b73a0fb437f7ee7ed8c9e48 100644 (file)
@@ -1001,7 +1001,9 @@ static int svm_cpu_init(int cpu)
 
        if (svm_sev_enabled()) {
                r = -ENOMEM;
-               sd->sev_vmcbs = kmalloc((max_sev_asid + 1) * sizeof(void *), GFP_KERNEL);
+               sd->sev_vmcbs = kmalloc_array(max_sev_asid + 1,
+                                             sizeof(void *),
+                                             GFP_KERNEL);
                if (!sd->sev_vmcbs)
                        goto err_1;
        }
@@ -4115,7 +4117,8 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
                break;
        case MSR_IA32_SPEC_CTRL:
                if (!msr_info->host_initiated &&
-                   !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS))
+                   !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS) &&
+                   !guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD))
                        return 1;
 
                msr_info->data = svm->spec_ctrl;
@@ -4217,11 +4220,12 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr)
                break;
        case MSR_IA32_SPEC_CTRL:
                if (!msr->host_initiated &&
-                   !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS))
+                   !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS) &&
+                   !guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD))
                        return 1;
 
                /* The STIBP bit doesn't fault even if it's not advertised */
-               if (data & ~(SPEC_CTRL_IBRS | SPEC_CTRL_STIBP))
+               if (data & ~(SPEC_CTRL_IBRS | SPEC_CTRL_STIBP | SPEC_CTRL_SSBD))
                        return 1;
 
                svm->spec_ctrl = data;