[dpdk-dev] [PATCH v2 1/1] bonding: fix error handling in rte_eth_bond_create()

Liu, Yong yong.liu at intel.com
Wed Aug 5 14:48:28 CEST 2015


Tested-by: Marvin Liu <yong.liu at intel.com>

> -----Original Message-----
> From: Iremonger, Bernard
> Sent: Wednesday, August 05, 2015 8:37 PM
> To: dev at dpdk.org
> Cc: Jastrzebski, MichalX K; Liu, Yong; Iremonger, Bernard
> Subject: [PATCH v2 1/1] bonding: fix error handling in
> rte_eth_bond_create()
> 
> if the name parameter to rte_eth_bond_create() was NULL,
> there was a segmentation fault because eth_dev was also NULL.
> 
> Signed-off-by: Bernard Iremonger <bernard.iremonger at intel.com>
> ---
>  drivers/net/bonding/rte_eth_bond_api.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/bonding/rte_eth_bond_api.c
> b/drivers/net/bonding/rte_eth_bond_api.c
> index 4ca26dd..0681d1a 100644
> --- a/drivers/net/bonding/rte_eth_bond_api.c
> +++ b/drivers/net/bonding/rte_eth_bond_api.c
> @@ -239,6 +239,10 @@ rte_eth_bond_create(const char *name, uint8_t mode,
> uint8_t socket_id)
> 
>  	eth_dev->data->mac_addrs = rte_zmalloc_socket(name, ETHER_ADDR_LEN,
> 0,
>  			socket_id);
> +	if (eth_dev->data->mac_addrs == NULL) {
> +		RTE_BOND_LOG(ERR, "Unable to malloc mac_addrs");
> +		goto err;
> +	}
> 
>  	eth_dev->data->dev_started = 0;
>  	eth_dev->data->promiscuous = 0;
> @@ -285,8 +289,10 @@ rte_eth_bond_create(const char *name, uint8_t mode,
> uint8_t socket_id)
>  err:
>  	rte_free(pci_dev);
>  	rte_free(internals);
> -	rte_free(eth_dev->data->mac_addrs);
> -
> +	if (eth_dev != NULL) {
> +		rte_free(eth_dev->data->mac_addrs);
> +		rte_eth_dev_release_port(eth_dev);
> +	}
>  	return -1;
>  }
> 
> --
> 1.9.1



More information about the dev mailing list