From ff4cf5265cc9dfdf41eabaded8617f73afb1283e Mon Sep 17 00:00:00 2001 From: Dmitry Kozlyuk Date: Fri, 9 Apr 2021 20:16:31 +0300 Subject: [PATCH] mem: fix cleanup after incomplete initialization In case of EAL initialization failure rte_eal_memory_detach() may be called before mapping memory configuration, which in this case points to the static structure. Attempt to unmap it yields error: EAL: Could not unmap shared memory config: Invalid argument Skip unmapping memory configuration if it's not yet shared. Fixes: dfbc61a2f9a6 ("mem: detach memsegs on cleanup") Reported-by: David Marchand Signed-off-by: Dmitry Kozlyuk Acked-by: Anatoly Burakov --- lib/librte_eal/common/eal_common_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c index 2581dd5f58..f83b75092e 100644 --- a/lib/librte_eal/common/eal_common_memory.c +++ b/lib/librte_eal/common/eal_common_memory.c @@ -1055,7 +1055,7 @@ rte_eal_memory_detach(void) * config - we can't zero it out because it might still be referenced * by other processes. */ - if (internal_conf->no_shconf == 0) { + if (internal_conf->no_shconf == 0 && mcfg->mem_cfg_addr != 0) { if (rte_mem_unmap(mcfg, RTE_ALIGN(sizeof(*mcfg), page_sz)) != 0) RTE_LOG(ERR, EAL, "Could not unmap shared memory config: %s\n", rte_strerror(rte_errno)); -- 2.20.1