On 04/06/20 17:12, Sean Christopherson wrote: > On Thu, Jun 04, 2020 at 12:16:36PM +0800, Xiaoyao Li wrote: >> Delay the assignment of array.maxnent to use correct value for the case >> cpuid->nent > KVM_MAX_CPUID_ENTRIES. >> >> Fixes: e53c95e8d41e ("KVM: x86: Encapsulate CPUID entries and metadata in struct") >> Signed-off-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx> >> --- >> v2: >> - remove "const" of maxnent to fix build error. >> --- >> arch/x86/kvm/cpuid.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c >> index 253b8e875ccd..3d88ddf781d0 100644 >> --- a/arch/x86/kvm/cpuid.c >> +++ b/arch/x86/kvm/cpuid.c >> @@ -426,7 +426,7 @@ EXPORT_SYMBOL_GPL(kvm_set_cpu_caps); >> >> struct kvm_cpuid_array { >> struct kvm_cpuid_entry2 *entries; >> - const int maxnent; >> + int maxnent; >> int nent; >> }; >> >> @@ -870,7 +870,6 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, >> >> struct kvm_cpuid_array array = { >> .nent = 0, >> - .maxnent = cpuid->nent, >> }; >> int r, i; >> >> @@ -887,6 +886,8 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, >> if (!array.entries) >> return -ENOMEM; >> >> + array.maxnent = cpuid->nent; > > Eh, I'd vote to just do: > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > index 253b8e875ccd..1e5b1ee75a76 100644 > --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -870,7 +870,7 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, > > struct kvm_cpuid_array array = { > .nent = 0, > - .maxnent = cpuid->nent, > + .maxnent = min(cpuid->nent, (u32)KVM_MAX_CPUID_ENTRIES), > }; > int r, i; > Both are fine, I've queued Xiaoyao's patch. Paolo