memzone: fix unlock on initialization failure

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: stable@dpdk.org

Signed-off-by: Gao Feng <davidfgao@tencent.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
Gao Feng 2018-12-07 09:20:08 +08:00 committed by Thomas Monjalon
parent 9cea8774cf
commit cc80353223

View File

@ -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 */