X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Feal_common_devargs.c;h=ffa8ad96f98245ed74b4597f0e39229050cd187b;hb=2eed820fd4fdea456103402e0ad13f955321e6cc;hp=615945e2ac40c4ae061376cae2ab129af1c177f5;hpb=a001589ec1d7ac0abd6eb382db09d755c5a456f8;p=dpdk.git diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c index 615945e2ac..ffa8ad96f9 100644 --- a/lib/librte_eal/common/eal_common_devargs.c +++ b/lib/librte_eal/common/eal_common_devargs.c @@ -31,11 +31,15 @@ */ /* This file manages the list of devices and their arguments, as given - * by the user at startup */ + * by the user at startup + * + * Code here should not call rte_log since the EAL environment + * may not be initialized. + */ +#include #include -#include #include #include #include "eal_private.h" @@ -54,11 +58,8 @@ rte_eal_parse_devargs_str(const char *devargs_str, return -1; *drvname = strdup(devargs_str); - if (drvname == NULL) { - RTE_LOG(ERR, EAL, - "cannot allocate temp memory for driver name\n"); + if (*drvname == NULL) return -1; - } /* set the first ',' to '\0' to split name and arguments */ sep = strchr(*drvname, ','); @@ -70,9 +71,8 @@ rte_eal_parse_devargs_str(const char *devargs_str, } if (*drvargs == NULL) { - RTE_LOG(ERR, EAL, - "cannot allocate temp memory for driver arguments\n"); free(*drvname); + *drvname = NULL; return -1; } return 0; @@ -88,10 +88,9 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str) /* use malloc instead of rte_malloc as it's called early at init */ devargs = malloc(sizeof(*devargs)); - if (devargs == NULL) { - RTE_LOG(ERR, EAL, "cannot allocate devargs\n"); + if (devargs == NULL) goto fail; - } + memset(devargs, 0, sizeof(*devargs)); devargs->type = devtype; @@ -103,19 +102,17 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str) case RTE_DEVTYPE_BLACKLISTED_PCI: /* try to parse pci identifier */ if (eal_parse_pci_BDF(buf, &devargs->pci.addr) != 0 && - eal_parse_pci_DomBDF(buf, &devargs->pci.addr) != 0) { - RTE_LOG(ERR, EAL, "invalid PCI identifier <%s>\n", buf); + eal_parse_pci_DomBDF(buf, &devargs->pci.addr) != 0) goto fail; - } + break; case RTE_DEVTYPE_VIRTUAL: /* save driver name */ - ret = snprintf(devargs->virtual.drv_name, - sizeof(devargs->virtual.drv_name), "%s", buf); - if (ret < 0 || ret >= (int)sizeof(devargs->virtual.drv_name)) { - RTE_LOG(ERR, EAL, "driver name too large: <%s>\n", buf); + ret = snprintf(devargs->virt.drv_name, + sizeof(devargs->virt.drv_name), "%s", buf); + if (ret < 0 || ret >= (int)sizeof(devargs->virt.drv_name)) goto fail; - } + break; } @@ -124,8 +121,7 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str) return 0; fail: - if (buf) - free(buf); + free(buf); if (devargs) { free(devargs->args); free(devargs); @@ -173,7 +169,7 @@ rte_eal_devargs_dump(FILE *f) devargs->args); else if (devargs->type == RTE_DEVTYPE_VIRTUAL) fprintf(f, " VIRTUAL %s %s\n", - devargs->virtual.drv_name, + devargs->virt.drv_name, devargs->args); else fprintf(f, " UNKNOWN %s\n", devargs->args);