[PATCH 5/7] net/nfp: fix resource leak for exit of CoreNIC firmware

Ferruh Yigit ferruh.yigit at amd.com
Thu Nov 30 12:00:42 CET 2023


On 11/30/2023 8:52 AM, Chaoyong He wrote:
> Fix the resource leak problem in the exit logic of CoreNIC firmware.
> 
> Fixes: 646ea79ce481 ("net/nfp: move PF functions into its own file")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Chaoyong He <chaoyong.he at corigine.com>
> Reviewed-by: Long Wu <long.wu at corigine.com>
> Reviewed-by: Peng Zhang <peng.zhang at corigine.com>

<...>

> +static int
> +nfp_pf_secondary_uninit(struct nfp_pf_dev *pf_dev)
> +{
> +	free(pf_dev->sym_tbl);
> +	rte_free(pf_dev);
> +
> +	return 0;
> +}
> +
>  /* Reset and stop device. The device can not be restarted. */
>  static int
>  nfp_net_close(struct rte_eth_dev *dev)
> @@ -333,14 +381,25 @@ nfp_net_close(struct rte_eth_dev *dev)
>  	struct rte_pci_device *pci_dev;
>  	struct nfp_app_fw_nic *app_fw_nic;
>  
> -	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> -		return 0;
> -
>  	hw = dev->data->dev_private;
>  	pf_dev = hw->pf_dev;
>  	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
>  	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
>  
> +	/*
> +	 * In secondary process, a released eth device can be found by its name
> +	 * in shared memory.
> +	 * If the state of the eth device is RTE_ETH_DEV_UNUSED, it means the
> +	 * eth device has been released.
> +	 */
> +	if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
> +		if (dev->state == RTE_ETH_DEV_UNUSED)
> +			return 0;
> +
> +		nfp_pf_secondary_uninit(pf_dev);
> +		return 0;
> +	}
> +
>

Mostly expectation is secondary process doesn't free shared resources,
but init and free done by primary process.

When there are multiple secondaries active, and if one of them closes
the port, will system behave properly? Can you please double check above
logic?



More information about the stable mailing list