X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fnfp%2Fnfpcore%2Fnfp_cpp_pcie_ops.c;h=0b9db974e12cc265e967d4a8e2a89ad3f854ae22;hb=31cdde02f0be730fc1b9b12a8b53f8a04fa423fc;hp=39bd48a8360e1e3899a9a1d4fc7b879a0589d65a;hpb=ef28aa96e53bc528a499acb866302280393783a0;p=dpdk.git diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c index 39bd48a836..0b9db974e1 100644 --- a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c +++ b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c @@ -16,7 +16,9 @@ #include #include +#if defined(RTE_BACKTRACE) #include +#endif #include #include #include @@ -688,12 +690,16 @@ nfp_acquire_secondary_process_lock(struct nfp_pcie_user *desc) lockfile = calloc(strlen(home_path) + strlen(lockname) + 1, sizeof(char)); + if (!lockfile) + return -ENOMEM; + strcat(lockfile, home_path); strcat(lockfile, "/.lock_nfp_secondary"); desc->secondary_lock = open(lockfile, O_RDWR | O_CREAT | O_NONBLOCK, 0666); if (desc->secondary_lock < 0) { RTE_LOG(ERR, PMD, "NFP lock for secondary process failed\n"); + free(lockfile); return desc->secondary_lock; } @@ -705,6 +711,7 @@ nfp_acquire_secondary_process_lock(struct nfp_pcie_user *desc) close(desc->secondary_lock); } + free(lockfile); return rc; } @@ -863,24 +870,24 @@ nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev) cpp->driver_lock_needed) { ret = nfp_acquire_process_lock(desc); if (ret) - return -1; + goto error; } /* Just support for one secondary process */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) { ret = nfp_acquire_secondary_process_lock(desc); if (ret) - return -1; + goto error; } if (nfp6000_set_model(dev, cpp) < 0) - return -1; + goto error; if (nfp6000_set_interface(dev, cpp) < 0) - return -1; + goto error; if (nfp6000_set_serial(dev, cpp) < 0) - return -1; + goto error; if (nfp6000_set_barsz(dev, desc) < 0) - return -1; + goto error; desc->cfg = (char *)dev->mem_resource[0].addr; @@ -888,7 +895,11 @@ nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev) nfp_cpp_priv_set(cpp, desc); - return ret; + return 0; + +error: + free(desc); + return -1; } static void