mlxsw: spectrum_acl_bloom_filter: use struct_size() in kzalloc()
Subsystems (3)
PATCH 1/1 mlxsw: spectrum_acl_bloom_filter: 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 issue was detected with the help of Coccinelle.
--- .../net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c +2 -2
@@ -234,8 +234,8 @@ mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks)* is 2^ACL_MAX_BF_LOG */ bf_bank_size =1 <<MLXSW_CORE_RES_GET (mlxsw_sp->core,ACL_MAX_BF_LOG ); - bf =kzalloc (sizeof (*bf) + bf_bank_size * num_erp_banks * -sizeof (*bf->refcnt),GFP_KERNEL ); + bf =kzalloc (struct_size (bf, refcnt, bf_bank_size * num_erp_banks), +GFP_KERNEL );if (!bf)return ERR_PTR (-ENOMEM );
Signature · 1 line
2.17.0
Quoted 11 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);
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 issue was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
But net-next is closed (http://vger.kernel.org/~davem/net-next.html) and this isn't a bug fix. Can you please re-submit when net-next opens again? Alternatively, I can apply the patch to my mlxsw queue and submit in your stead. Let me know what you prefer.
Thanks!
Quoted 19 lines · Ido Schimmel
Quoted 18 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:instance =
kzalloc(struct_size(instance, entry, count), GFP_KERNEL);This issue was detected with the help of Coccinelle.
Quoted 9 lines
Quoted 1 line
Signed-off-by Gustavo A. R. Silva <[email protected]>Reviewed-by Ido Schimmel <[email protected]>But net-next is closed (http://vger.kernel.org/~davem/net-next.html) and this isn't a bug fix. Can you please re-submit when net-next opens again? Alternatively, I can apply the patch to my mlxsw queue and submit in your stead. Let me know what you prefer.
Oh yeah. I forgot net close net-next during the merge window. I'll re-submit it in two weeks then. I'll add your Reviewed-by.
Happy holiday.
Thanks
--
Gustavo