On 7/8/2020 2:50 PM, Xiaoyao Li wrote:
Use kvm_check_cpuid() to validate if userspace provides legal cpuid
settings and call it before KVM updates CPUID.

Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com>
[...]
@@ -202,12 +208,16 @@ int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu,
                vcpu->arch.cpuid_entries[i].padding[2] = 0;
        }
        vcpu->arch.cpuid_nent = cpuid->nent;
+       r = kvm_check_cpuid(vcpu);
+       if (r) {
+               vcpu->arch.cpuid_nent = 0;

Paolo,

here lack a kvfree(cpuid_entries);
Can you help fix it?

Apologize for it.


+               goto out;
+       }
+
        cpuid_fix_nx_cap(vcpu);
        kvm_apic_set_version(vcpu);
        kvm_x86_ops.cpuid_update(vcpu);
-       r = kvm_update_cpuid(vcpu);
-       if (r)
-               vcpu->arch.cpuid_nent = 0;
+       kvm_update_cpuid(vcpu);
kvfree(cpuid_entries);
  out:

Reply via email to