diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-05-23 17:56:53 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-05-25 10:57:58 -0700 |
commit | 6dca9360a9d7a15cef215cea4a55575dbfd2ebdd (patch) | |
tree | 5ac4753ef4b0c9e53e9288c57a0c7b0af6c58081 /net/core | |
parent | 22942498ccebf13b076859f8746be161dc0c6d89 (diff) | |
download | linux-6dca9360a9d7a15cef215cea4a55575dbfd2ebdd.tar.gz linux-6dca9360a9d7a15cef215cea4a55575dbfd2ebdd.tar.bz2 linux-6dca9360a9d7a15cef215cea4a55575dbfd2ebdd.zip |
flow_offload: 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 foo {
int stuff;
struct boo entry[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), 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, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/flow_offload.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c index 5ce7d47a960e..3d93e51b83e0 100644 --- a/net/core/flow_offload.c +++ b/net/core/flow_offload.c @@ -7,8 +7,7 @@ struct flow_rule *flow_rule_alloc(unsigned int num_actions) { struct flow_rule *rule; - rule = kzalloc(sizeof(struct flow_rule) + - sizeof(struct flow_action_entry) * num_actions, + rule = kzalloc(struct_size(rule, action.entries, num_actions), GFP_KERNEL); if (!rule) return NULL; |