Re: [PATCH][next] nfp: flower: Use struct_size() helper in kmalloc()

From: Simon Horman
Date: Wed Jan 26 2022 - 03:24:15 EST


On Tue, Jan 25, 2022 at 01:33:19PM -0600, Gustavo A. R. Silva wrote:
> 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 worst scenario, could lead to heap overflows.
>
> Also, address the following sparse warnings:
> drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c:359:25: warning: using sizeof on a flexible structure
>
> Link: https://github.com/KSPP/linux/issues/174
> Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>

Acked-by: Simon Horman <simon.horman@xxxxxxxxxxxx>

> ---
> drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
> index dfb4468fe287..ce865e619568 100644
> --- a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
> +++ b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
> @@ -356,7 +356,7 @@ __nfp_tun_add_route_to_cache(struct list_head *route_list,
> return 0;
> }
>
> - entry = kmalloc(sizeof(*entry) + add_len, GFP_ATOMIC);
> + entry = kmalloc(struct_size(entry, ip_add, add_len), GFP_ATOMIC);
> if (!entry) {
> spin_unlock_bh(list_lock);
> return -ENOMEM;
> --
> 2.27.0
>