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>
        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 */
 
                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;