lib: objagg: Use struct_size() in kzalloc()
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Wed, 5 Jun 2019 14:45:16 +0000 (09:45 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Jun 2019 02:03:39 +0000 (19:03 -0700)
commite736bf72af568d0a04f186e1c5dde6789b19c35e
tree0d17e2f1c2c06b138eea5af458bf49e4337b0a86
parent8b5e07d7ee95e3c22cb301731f87d95f58639591
lib: objagg: Use struct_size() in kzalloc()

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 objagg_stats {
...
        struct objagg_obj_stats_info stats_info[];
};

size = sizeof(*objagg_stats) + sizeof(objagg_stats->stats_info[0]) * count;
instance = kzalloc(size, GFP_KERNEL);

Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:

instance = kzalloc(struct_size(instance, stats_info, count), GFP_KERNEL);

Notice that, in this case, variable alloc_size is not necessary, hence it
is removed.

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
lib/objagg.c