qtnfmac: use struct_size() in kzalloc()
Subsystems (3)
PATCH 1/1 qtnfmac: 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;
void *entry[];
};instance = kzalloc(sizeof(struct foo) + sizeof(void *) * count, 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.
--- drivers/net/wireless/quantenna/qtnfmac/commands.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/net/wireless/quantenna/qtnfmac/commands.c +2 -3
@@ -914,9 +914,8 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,if (WARN_ON (resp->n_reg_rules >NL80211_MAX_SUPP_REG_RULES ))return -E2BIG ; - hwinfo->rd =kzalloc (sizeof (*hwinfo->rd) - +sizeof (struct ieee80211_reg_rule ) - * resp->n_reg_rules,GFP_KERNEL ); + hwinfo->rd =kzalloc (struct_size (hwinfo->rd, reg_rules, + resp->n_reg_rules),GFP_KERNEL );if (!hwinfo->rd)return -ENOMEM ;
Signature · 1 line
2.20.1
Quoted 8 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; void *entry[]; };
...
Quoted 11 lines
Signed-off-by Gustavo A. R. Silva <[email protected]>--- drivers/net/wireless/quantenna/qtnfmac/commands.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)drivers/net/wireless/quantenna/qtnfmac/commands.c +0
-0@@ -914,9 +914,8 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,if (WARN_ON (resp->n_reg_rules >NL80211_MAX_SUPP_REG_RULES ))
drivers/net/wireless/quantenna/qtnfmac/commands.c qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus, · line 921
Quoted 10 lines
drivers/net/wireless/quantenna/qtnfmac/commands.c +2
-3return -E2BIG ; - hwinfo->rd =kzalloc (sizeof (*hwinfo->rd) - +sizeof (struct ieee80211_reg_rule ) - * resp->n_reg_rules,GFP_KERNEL ); + hwinfo->rd =kzalloc (struct_size (hwinfo->rd, reg_rules, + resp->n_reg_rules),GFP_KERNEL );if (!hwinfo->rd)return -ENOMEM ;
Thanks!
Regards,
Sergey
Quoted 14 lines · Gustavo A. R. Silva
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; void *entry[]; };instance =
kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:
Quoted 6 lines
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]>Reviewed-by Sergey Matyukevich <[email protected]>
Patch applied to wireless-drivers-next.git, thanks.
db040dfa53e2 qtnfmac: use struct_size() in kzalloc()
Signature · 3 lines
https://patchwork.kernel.org/patch/10752601/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches