Skip to content

Commit

Permalink
eal: fix leak in shared lib mode detection
Browse files Browse the repository at this point in the history
[ upstream commit b81bf1e ]

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: 06c7871 ("eal: restrict default plugin path to shared lib mode")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  • Loading branch information
david-marchand authored and steevenlee committed Jun 8, 2021
1 parent 5be4837 commit 3cb6827
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lib/librte_eal/common/eal_common_options.c
Expand Up @@ -508,10 +508,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;
}

Expand Down

0 comments on commit 3cb6827

Please sign in to comment.