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...@intel.com> > --- > 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; > + > for (i = 0; i < ARRAY_SIZE(funcs); i++) { > r = get_cpuid_func(&array, funcs[i], type); > if (r) > -- > 2.18.2 >