The RTE_PROC_PRIMARY error handler lost the unlock statement in the
current codes. Now unlock and return in one place to fix it.

Fixes: 49df3db84883 ("memzone: replace memzone array with fbarray")
Cc: sta...@dpdk.org

Signed-off-by: Gao Feng <davidf...@tencent.com>
---
 v2: Unlock and return in one place, per Anatoly

 lib/librte_eal/common/eal_common_memzone.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_memzone.c 
b/lib/librte_eal/common/eal_common_memzone.c
index b7081af..664df5b 100644
--- a/lib/librte_eal/common/eal_common_memzone.c
+++ b/lib/librte_eal/common/eal_common_memzone.c
@@ -365,6 +365,7 @@ int
 rte_eal_memzone_init(void)
 {
        struct rte_mem_config *mcfg;
+       int ret = 0;
 
        /* get pointer to global configuration */
        mcfg = rte_eal_get_configuration()->mem_config;
@@ -375,17 +376,16 @@ rte_eal_memzone_init(void)
                        rte_fbarray_init(&mcfg->memzones, "memzone",
                        RTE_MAX_MEMZONE, sizeof(struct rte_memzone))) {
                RTE_LOG(ERR, EAL, "Cannot allocate memzone list\n");
-               return -1;
+               ret = -1;
        } else if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
                        rte_fbarray_attach(&mcfg->memzones)) {
                RTE_LOG(ERR, EAL, "Cannot attach to memzone list\n");
-               rte_rwlock_write_unlock(&mcfg->mlock);
-               return -1;
+               ret = -1;
        }
 
        rte_rwlock_write_unlock(&mcfg->mlock);
 
-       return 0;
+       return ret;
 }
 
 /* Walk all reserved memory zones */
-- 
2.7.4


Reply via email to