[dpdk-dev] [PATCH v6 04/22] eal: release devargs on device removal
Gaetan Rivet
gaetan.rivet at 6wind.com
Fri Jul 7 02:09:11 CEST 2017
Release resources allocated for devargs when the device is being
removed.
Signed-off-by: Gaetan Rivet <gaetan.rivet at 6wind.com>
---
lib/librte_eal/common/eal_common_dev.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index 708c8e9..143c231 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -177,7 +177,7 @@ rte_eal_hotplug_add(const char *busname, const char *devname,
ret = bus->scan();
if (ret) {
rte_errno = -ret;
- goto err_name;
+ goto err_devarg;
}
dev = bus->find_device(NULL, cmp_detached_dev_name, devname);
@@ -185,7 +185,7 @@ rte_eal_hotplug_add(const char *busname, const char *devname,
RTE_LOG(ERR, EAL, "Cannot find unplugged device (%s)\n",
devname);
rte_errno = EINVAL;
- goto err_name;
+ goto err_devarg;
}
ret = bus->plug(dev, devargs);
@@ -193,11 +193,13 @@ rte_eal_hotplug_add(const char *busname, const char *devname,
RTE_LOG(ERR, EAL, "Driver cannot attach the device (%s)\n",
dev->name);
rte_errno = -ret;
- goto err_name;
+ goto err_devarg;
}
free(name);
return dev;
+err_devarg:
+ rte_eal_devargs_rmv(busname, devname);
err_name:
free(name);
return NULL;
@@ -230,6 +232,8 @@ int rte_eal_hotplug_remove(const char *busname, const char *devname)
return -EINVAL;
}
+ rte_eal_devargs_rmv(busname, devname);
+ dev->devargs = NULL;
ret = bus->unplug(dev);
if (ret) {
RTE_LOG(ERR, EAL, "Driver cannot detach the device (%s)\n",
--
2.1.4
More information about the dev
mailing list