.../net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
dr_icm_buddy_init_ste_cache() allocates the per-buddy miss_list using
the open-coded kvmalloc(n * sizeof(*p), ...) form. The neighbouring
allocations in the same function already use the kvcalloc()/
kvzalloc_objs() forms; switch this last one to kvmalloc_array() for
consistency and for the size_mul overflow check that kvmalloc_array()
performs.
The semantics are unchanged: kvmalloc_array() returns a non-zeroed
buffer, just like the previous kvmalloc() call. Existing callers of
buddy->miss_list initialise each list_head before use.
Signed-off-by: William Theesfeld <william@theesfeld.net>
---
.../net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c
index 7a0a15822..fa4d24b3d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c
@@ -239,7 +239,7 @@ static int dr_icm_buddy_init_ste_cache(struct mlx5dr_icm_buddy_mem *buddy)
if (!buddy->hw_ste_arr)
goto free_ste_arr;
- buddy->miss_list = kvmalloc(num_of_entries * sizeof(struct list_head), GFP_KERNEL);
+ buddy->miss_list = kvmalloc_array(num_of_entries, sizeof(struct list_head), GFP_KERNEL);
if (!buddy->miss_list)
goto free_hw_ste_arr;
--
2.54.0
On 01/06/2026 22:37, William Theesfeld wrote: > dr_icm_buddy_init_ste_cache() allocates the per-buddy miss_list using > the open-coded kvmalloc(n * sizeof(*p), ...) form. The neighbouring > allocations in the same function already use the kvcalloc()/ > kvzalloc_objs() forms; switch this last one to kvmalloc_array() for > consistency and for the size_mul overflow check that kvmalloc_array() > performs. > > The semantics are unchanged: kvmalloc_array() returns a non-zeroed > buffer, just like the previous kvmalloc() call. Existing callers of > buddy->miss_list initialise each list_head before use. > > Signed-off-by: William Theesfeld <william@theesfeld.net> > --- > .../net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c > index 7a0a15822..fa4d24b3d 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c > @@ -239,7 +239,7 @@ static int dr_icm_buddy_init_ste_cache(struct mlx5dr_icm_buddy_mem *buddy) > if (!buddy->hw_ste_arr) > goto free_ste_arr; > > - buddy->miss_list = kvmalloc(num_of_entries * sizeof(struct list_head), GFP_KERNEL); > + buddy->miss_list = kvmalloc_array(num_of_entries, sizeof(struct list_head), GFP_KERNEL); > if (!buddy->miss_list) > goto free_hw_ste_arr; > Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Thanks for your patch.
On 6/1/26 9:37 PM, William Theesfeld wrote: > dr_icm_buddy_init_ste_cache() allocates the per-buddy miss_list using > the open-coded kvmalloc(n * sizeof(*p), ...) form. The neighbouring > allocations in the same function already use the kvcalloc()/ > kvzalloc_objs() forms; switch this last one to kvmalloc_array() for > consistency and for the size_mul overflow check that kvmalloc_array() > performs. > > The semantics are unchanged: kvmalloc_array() returns a non-zeroed > buffer, just like the previous kvmalloc() call. Existing callers of > buddy->miss_list initialise each list_head before use. > > Signed-off-by: William Theesfeld <william@theesfeld.net> > --- > .../net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c > index 7a0a15822..fa4d24b3d 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_icm_pool.c > @@ -239,7 +239,7 @@ static int dr_icm_buddy_init_ste_cache(struct mlx5dr_icm_buddy_mem *buddy) > if (!buddy->hw_ste_arr) > goto free_ste_arr; > > - buddy->miss_list = kvmalloc(num_of_entries * sizeof(struct list_head), GFP_KERNEL); > + buddy->miss_list = kvmalloc_array(num_of_entries, sizeof(struct list_head), GFP_KERNEL); > if (!buddy->miss_list) > goto free_hw_ste_arr; @Leon, @Tariq: the patch looks obviously correct to me, still an explicit ack would be nice, I think. Thanks, Paolo
© 2016 - 2026 Red Hat, Inc.