X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Feal_common_dev.c;h=dda8f58352be665209ad24ea231d81ee72011274;hb=78214fb8821fab0669c1c48f00fc4773e5a9eb98;hp=d19232d7960638c260781dd441e72025c701a5e2;hpb=3054036f054a7486ae1979ce18d32c6e3d057b26;p=dpdk.git diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c index d19232d796..dda8f58352 100644 --- a/lib/librte_eal/common/eal_common_dev.c +++ b/lib/librte_eal/common/eal_common_dev.c @@ -67,7 +67,6 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name) int rte_eal_dev_attach(const char *name, const char *devargs) { struct rte_bus *bus; - int ret; if (name == NULL || devargs == NULL) { RTE_LOG(ERR, EAL, "Invalid device or arguments provided\n"); @@ -80,22 +79,13 @@ int rte_eal_dev_attach(const char *name, const char *devargs) name); return -EINVAL; } - if (strcmp(bus->name, "pci") == 0) - return rte_eal_hotplug_add("pci", name, devargs); - if (strcmp(bus->name, "vdev") != 0) { - RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n"); - return -ENOTSUP; - } + if (strcmp(bus->name, "pci") == 0 || strcmp(bus->name, "vdev") == 0) + return rte_eal_hotplug_add(bus->name, name, devargs); - /* - * If we haven't found a bus device the user meant to "hotplug" a - * virtual device instead. - */ - ret = rte_vdev_init(name, devargs); - if (ret) - RTE_LOG(ERR, EAL, "Driver cannot attach the device (%s)\n", - name); - return ret; + RTE_LOG(ERR, EAL, + "Device attach is only supported for PCI and vdev devices.\n"); + + return -ENOTSUP; } int rte_eal_dev_detach(struct rte_device *dev) @@ -133,7 +123,7 @@ full_dev_name(const char *bus, const char *dev, const char *args) char *name; size_t len; - len = snprintf(NULL, 0, "%s:%s,%s", bus, dev, args); + len = snprintf(NULL, 0, "%s:%s,%s", bus, dev, args) + 1; name = calloc(1, len); if (name == NULL) { RTE_LOG(ERR, EAL, "Could not allocate full device name\n"); @@ -204,7 +194,10 @@ int rte_eal_hotplug_add(const char *busname, const char *devname, return 0; err_devarg: - rte_eal_devargs_remove(busname, devname); + if (rte_eal_devargs_remove(busname, devname)) { + free(da->args); + free(da); + } err_name: free(name); return ret;