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