Extra goto's to just a return are unnecessary. Don't do unnecessary initialization. Propgate return value.
Signed-off-by: Stephen Hemminger <step...@networkplumber.org> --- lib/librte_ether/rte_ethdev.c | 52 +++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 9dea1f15..2bd7db6d 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -419,18 +419,17 @@ rte_eth_dev_is_detachable(uint8_t port_id) int rte_eth_dev_attach(const char *devargs, uint8_t *port_id) { - int ret = -1; int current = rte_eth_dev_count(); char *name = NULL; char *args = NULL; + int ret; - if ((devargs == NULL) || (port_id == NULL)) { - ret = -EINVAL; - goto err; - } + if (devargs == NULL || port_id == NULL) + return -EINVAL; /* parse devargs, then retrieve device name and args */ - if (rte_eal_parse_devargs_str(devargs, &name, &args)) + ret = rte_eal_parse_devargs_str(devargs, &name, &args); + if (ret < 0) goto err; ret = rte_eal_dev_attach(name, args); @@ -441,20 +440,18 @@ rte_eth_dev_attach(const char *devargs, uint8_t *port_id) if (!rte_eth_dev_count()) { RTE_LOG(ERR, EAL, "No port found for device (%s)\n", name); ret = -1; - goto err; - } - - /* if nothing happened, there is a bug here, since some driver told us - * it did attach a device, but did not create a port. - */ - if (current == rte_eth_dev_count()) { + } else if (current == rte_eth_dev_count()) { + /* + * if nothing happened, there is a bug here, since + * some driver told us it did attach a device, but did + * not create a port. + */ ret = -1; - goto err; + } else { + *port_id = eth_dev_last_created_port; + ret = 0; } - *port_id = eth_dev_last_created_port; - ret = 0; - err: free(name); free(args); @@ -465,27 +462,20 @@ rte_eth_dev_attach(const char *devargs, uint8_t *port_id) int rte_eth_dev_detach(uint8_t port_id, char *name) { - int ret = -1; + int ret; - if (name == NULL) { - ret = -EINVAL; - goto err; - } + if (name == NULL) + return -EINVAL; /* FIXME: move this to eal, once device flags are relocated there */ - if (rte_eth_dev_is_detachable(port_id)) - goto err; + ret = rte_eth_dev_is_detachable(port_id); + if (ret < 0) + return ret; snprintf(name, sizeof(rte_eth_devices[port_id].data->name), "%s", rte_eth_devices[port_id].data->name); - ret = rte_eal_dev_detach(name); - if (ret < 0) - goto err; - return 0; - -err: - return ret; + return rte_eal_dev_detach(name); } static int -- 2.11.0