diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-08-29 22:06:05 +0300 |
---|---|---|
committer | Dennis Zhou <dennis@kernel.org> | 2019-09-04 23:40:49 +0300 |
commit | 14d3761245551bdfc516abd8214a9f76bfd51435 (patch) | |
tree | 3dc48f37789de59f6ff352b50728a2169574b93d /mm/percpu.c | |
parent | 69ab285b682328ef7622f0567f8afebb00b404f3 (diff) | |
download | linux-14d3761245551bdfc516abd8214a9f76bfd51435.tar.xz |
percpu: Use struct_size() helper
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:
struct pcpu_alloc_info {
...
struct pcpu_group_info groups[];
};
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.
So, replace the following form:
sizeof(*ai) + nr_groups * sizeof(ai->groups[0])
with:
struct_size(ai, groups, nr_groups)
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Dennis Zhou <dennis@kernel.org>
Diffstat (limited to 'mm/percpu.c')
-rw-r--r-- | mm/percpu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/percpu.c b/mm/percpu.c index 7e2aa0305c27..7e06a1e58720 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -2125,7 +2125,7 @@ struct pcpu_alloc_info * __init pcpu_alloc_alloc_info(int nr_groups, void *ptr; int unit; - base_size = ALIGN(sizeof(*ai) + nr_groups * sizeof(ai->groups[0]), + base_size = ALIGN(struct_size(ai, groups, nr_groups), __alignof__(ai->groups[0].cpu_map[0])); ai_size = base_size + nr_units * sizeof(ai->groups[0].cpu_map[0]); |