net/mlx5: Use struct_size() helper in kvzalloc()
authorGustavo A. R. Silva <gustavoars@kernel.org>
Tue, 28 Sep 2021 22:11:57 +0000 (17:11 -0500)
committerSaeed Mahameed <saeedm@nvidia.com>
Thu, 30 Sep 2021 23:19:02 +0000 (16:19 -0700)
Make use of the struct_size() helper instead of an open-coded version,
in order to avoid any potential type mistakes or integer overflows that,
in the worse scenario, could lead to heap overflows.

Link: https://github.com/KSPP/linux/issues/160
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c

index 18e5aec..f542a36 100644 (file)
@@ -497,8 +497,7 @@ static struct mlx5_fc_bulk *mlx5_fc_bulk_create(struct mlx5_core_dev *dev)
        alloc_bitmask = MLX5_CAP_GEN(dev, flow_counter_bulk_alloc);
        bulk_len = alloc_bitmask > 0 ? MLX5_FC_BULK_NUM_FCS(alloc_bitmask) : 1;
 
-       bulk = kvzalloc(sizeof(*bulk) + bulk_len * sizeof(struct mlx5_fc),
-                       GFP_KERNEL);
+       bulk = kvzalloc(struct_size(bulk, fcs, bulk_len), GFP_KERNEL);
        if (!bulk)
                goto err_alloc_bulk;