[dpdk-stable] [dpdk-dev] [PATCH] net/mlx4: optimize stuck memory size in probe

Raslan Darawsheh rasland at mellanox.com
Wed Jul 22 17:30:49 CEST 2020


Hi,

> -----Original Message-----
> From: dev <dev-bounces at dpdk.org> On Behalf Of Michael Baum
> Sent: Tuesday, July 21, 2020 3:01 PM
> To: dev at dpdk.org
> Cc: Matan Azrad <matan at mellanox.com>; Slava Ovsiienko
> <viacheslavo at mellanox.com>; stable at dpdk.org
> Subject: [dpdk-dev] [PATCH] net/mlx4: optimize stuck memory size in probe
> 
> The mlx4_pci_probe function sets a pointer to the mlx4_priv structure,
> and during that function fills its fields one by one with relevant
> values.
> 
> It wants to put a value in the intr_handle field that has all its fields
> zero except 2. To do so, it initializes a local struct rte_intr_handle
> type variable and updates it only 2 fields and assigns it into the
> appropriate field. However, it initializes a very large structure on the
> stack while not at all certain that this place exists and in any case it
> is very wasteful.
> 
> Reset all fields directly to the pointer by memset, then format the 2
> fields to the relevant values.
> 
> Fixes: 63c2f23c852a ("net/mlx4: use a single interrupt handle")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Michael Baum <michaelba at mellanox.com>
> Acked-by: Matan Azrad <matan at mellanox.com>
> ---
>  drivers/net/mlx4/mlx4.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
> index e619a74..71061a7 100644
> --- a/drivers/net/mlx4/mlx4.c
> +++ b/drivers/net/mlx4/mlx4.c
> @@ -1029,10 +1029,9 @@ struct mlx4_conf {
>  		eth_dev->device = &pci_dev->device;
>  		rte_eth_copy_pci_info(eth_dev, pci_dev);
>  		/* Initialize local interrupt handle for current port. */
> -		priv->intr_handle = (struct rte_intr_handle){
> -			.fd = -1,
> -			.type = RTE_INTR_HANDLE_EXT,
> -		};
> +		memset(&priv->intr_handle, 0, sizeof(struct
> rte_intr_handle));
> +		priv->intr_handle.fd = -1;
> +		priv->intr_handle.type = RTE_INTR_HANDLE_EXT;
>  		/*
>  		 * Override ethdev interrupt handle pointer with private
>  		 * handle instead of that of the parent PCI device used by
> --
> 1.8.3.1


Patch applied to next-net-mlx

Kindest regards,
Raslan Darawsheh


More information about the stable mailing list