From: David Marchand Date: Thu, 6 May 2021 10:06:37 +0000 (+0200) Subject: eal: fix leak in shared lib mode detection X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=b81bf1efe3ff7bf6bedf4dcce1e3fb90ac9c8d3c;p=dpdk.git eal: fix leak in shared lib mode detection This is reported by our internal covscan: 1. dpdk-20.11/lib/librte_eal/common/eal_common_options.c:508: alloc_fn: Storage is returned from allocation function "dlopen". 6. dpdk-20.11/lib/librte_eal/common/eal_common_options.c:508: leaked_storage: Failing to save or free storage allocated by "dlopen("librte_eal.so.21.0", 5)" leaks it. # 506| * shared library is not already loaded i.e. it's # statically linked.) # 507| */ # 508|-> if (dlopen("librte_eal.so."ABI_VERSION, RTLD_LAZY | # RTLD_NOLOAD) != NULL && # 509| *default_solib_dir != '\0' && # 510| stat(default_solib_dir, &sb) == 0 && This leak is not an issue per se, but on the other hand, this is easy to fix and I prefer not having to waive this warning later. Fixes: 06c7871dde01 ("eal: restrict default plugin path to shared lib mode") Cc: stable@dpdk.org Signed-off-by: David Marchand Acked-by: Bruce Richardson --- diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c index 97ab6e00fd..ff5861b5f3 100644 --- a/lib/eal/common/eal_common_options.c +++ b/lib/eal/common/eal_common_options.c @@ -509,10 +509,14 @@ is_shared_build(void) } while (len >= minlen) { + void *handle; + /* check if we have this .so loaded, if so - shared build */ RTE_LOG(DEBUG, EAL, "Checking presence of .so '%s'\n", soname); - if (dlopen(soname, RTLD_LAZY | RTLD_NOLOAD) != NULL) { + handle = dlopen(soname, RTLD_LAZY | RTLD_NOLOAD); + if (handle != NULL) { RTE_LOG(INFO, EAL, "Detected shared linkage of DPDK\n"); + dlclose(handle); return 1; }