diff --git a/libs/libc/dlfcn/lib_dlopen.c b/libs/libc/dlfcn/lib_dlopen.c index 96bae367b47..c93e2b88988 100644 --- a/libs/libc/dlfcn/lib_dlopen.c +++ b/libs/libc/dlfcn/lib_dlopen.c @@ -196,7 +196,7 @@ static inline FAR void *dlinsert(FAR const char *filename) if (ret != 0) { serr("ERROR: Failed to initialize to load module: %d\n", ret); - goto errout_with_lock; + goto errout_with_loadinfo; } /* Allocate a module registry entry to hold the module data */ @@ -296,7 +296,6 @@ errout_with_registry_entry: lib_free(modp); errout_with_loadinfo: modlib_uninitialize(&loadinfo); -errout_with_lock: modlib_registry_unlock(); set_errno(-ret); return NULL; diff --git a/libs/libc/modlib/modlib_init.c b/libs/libc/modlib/modlib_init.c index dcbc3db8135..6b106a21e3c 100644 --- a/libs/libc/modlib/modlib_init.c +++ b/libs/libc/modlib/modlib_init.c @@ -173,8 +173,7 @@ int modlib_initialize(FAR const char *filename, */ berr("ERROR: Bad ELF header: %d\n", ret); - return ret; } - return OK; + return ret; } diff --git a/libs/libc/modlib/modlib_uninit.c b/libs/libc/modlib/modlib_uninit.c index 06d18f8b3e5..7cd9de6d482 100644 --- a/libs/libc/modlib/modlib_uninit.c +++ b/libs/libc/modlib/modlib_uninit.c @@ -61,6 +61,7 @@ int modlib_uninitialize(FAR struct mod_loadinfo_s *loadinfo) if (loadinfo->filfd >= 0) { _NX_CLOSE(loadinfo->filfd); + loadinfo->filfd = -1; } return OK;