flow_offload: use struct_size() in kzalloc()
Subsystems (2)
PATCH 1/1 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.
--- net/core/flow_offload.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
net/core/flow_offload.c +1 -2
@@ -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 ;
Signature · 1 line
2.21.0
From: "Gustavo A. R. Silva" <[email protected]>
Date: Thu, 23 May 2019 17:56:53 -0500
Quoted 11 lines
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);
Quoted 8 lines
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 <[email protected]>
Applied.