mirror of
https://github.com/opnsense/src.git
synced 2026-03-09 17:51:07 -04:00
dlclose() call may unload the object of the outer call prematurely because objects are unreferenced before _fini() calls. Fix this by unreferencing objects after calling objlist_call_fini() in dlclose(). Therefore objlist_call_fini() now calls the fini function if the reference count of an object is 1. In addition we must restart the list_fini traversal after every _fini() call because another dlclose() call might have modified the reference counts. Add an XXX comment to objlist_call_fini() about possible race with dlopen(). PR: 133246, 149464 Reviewed by: kan, kib |
||
|---|---|---|
| .. | ||
| amd64 | ||
| arm | ||
| i386 | ||
| ia64 | ||
| mips | ||
| powerpc | ||
| powerpc64 | ||
| sparc64 | ||
| debug.c | ||
| debug.h | ||
| libmap.c | ||
| libmap.h | ||
| Makefile | ||
| malloc.c | ||
| map_object.c | ||
| rtld.1 | ||
| rtld.c | ||
| rtld.h | ||
| rtld_lock.c | ||
| rtld_lock.h | ||
| rtld_tls.h | ||
| Symbol.map | ||
| xmalloc.c | ||