Commit 10470c0d authored by Gustavo A. R. Silva's avatar Gustavo A. R. Silva Committed by David S. Miller

mlxsw: spectrum_cnt: Use flex_array_size() helper in memcpy()

Make use of the flex_array_size() helper to calculate the size of a
flexible array member within an enclosing structure.

This helper offers defense-in-depth against potential integer
overflows, while at the same time makes it explicitly clear that
we are dealing witha flexible array member.

Also, remove unnecessary pointer identifier sub_pool.
Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
Reviewed-by: default avatarIdo Schimmel <idosch@mellanox.com>
Tested-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b04e55d6
...@@ -121,7 +121,6 @@ int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp) ...@@ -121,7 +121,6 @@ int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp)
{ {
unsigned int sub_pools_count = ARRAY_SIZE(mlxsw_sp_counter_sub_pools); unsigned int sub_pools_count = ARRAY_SIZE(mlxsw_sp_counter_sub_pools);
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core); struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
struct mlxsw_sp_counter_sub_pool *sub_pool;
struct mlxsw_sp_counter_pool *pool; struct mlxsw_sp_counter_pool *pool;
unsigned int map_size; unsigned int map_size;
int err; int err;
...@@ -131,9 +130,9 @@ int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp) ...@@ -131,9 +130,9 @@ int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp)
if (!pool) if (!pool)
return -ENOMEM; return -ENOMEM;
mlxsw_sp->counter_pool = pool; mlxsw_sp->counter_pool = pool;
memcpy(pool->sub_pools, mlxsw_sp_counter_sub_pools,
sub_pools_count * sizeof(*sub_pool));
pool->sub_pools_count = sub_pools_count; pool->sub_pools_count = sub_pools_count;
memcpy(pool->sub_pools, mlxsw_sp_counter_sub_pools,
flex_array_size(pool, sub_pools, pool->sub_pools_count));
spin_lock_init(&pool->counter_pool_lock); spin_lock_init(&pool->counter_pool_lock);
atomic_set(&pool->active_entries_count, 0); atomic_set(&pool->active_entries_count, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment