]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: PPC: Replace zero-length array with flexible array member
authorLen Baker <len.baker@gmx.com>
Sat, 18 Sep 2021 14:21:38 +0000 (16:21 +0200)
committerGustavo A. R. Silva <gustavoars@kernel.org>
Wed, 20 Oct 2021 23:30:42 +0000 (18:30 -0500)
There is a regular need in the kernel to provide a way to declare having
a dynamically sized set of trailing elements in a structure. Kernel code
should always use "flexible array members" [1] for these cases. The
older style of one-element or zero-length arrays should no longer be
used[2].

Also, make use of the struct_size() helper in kzalloc().

[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays

Signed-off-by: Len Baker <len.baker@gmx.com>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/kvm/book3s_64_vio.c

index 080a7feb77318070609115fa2bcfd94294defd54..3aed653373a5d426ff1b2f0727c99c02a8aadd50 100644 (file)
@@ -190,7 +190,7 @@ struct kvmppc_spapr_tce_table {
        u64 size;               /* window size in pages */
        struct list_head iommu_tables;
        struct mutex alloc_lock;
-       struct page *pages[0];
+       struct page *pages[];
 };
 
 /* XICS components, defined in book3s_xics.c */
index 6365087f3160243c1c058c280ef7b14dc6506f33..d42b4b6d4a791d17fde665688a3d08e70a08c01e 100644 (file)
@@ -295,8 +295,7 @@ long kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm,
                return ret;
 
        ret = -ENOMEM;
-       stt = kzalloc(sizeof(*stt) + npages * sizeof(struct page *),
-                     GFP_KERNEL);
+       stt = kzalloc(struct_size(stt, pages, npages), GFP_KERNEL);
        if (!stt)
                goto fail_acct;