opnsense-src/libexec/rtld-elf
Mark Johnston 323226829a rtld-elf: Avoid unnecessary lock_restart_for_upgrade() calls
In order to atomically upgrade the rtld bind lock, load_filtees() may
trigger a longjmp back to _rtld_bind() so that the binding can be done
with the write lock held.  However, the write lock is only needed when
filtee objects haven't already been loaded, so move the
lock_restart_for_upgrade() call to avoid unnecessary lock upgrades when
a filtee is defined.

Reviewed by:	kib
Tested by:	brooks
MFC after:	1 week
Sponsored by:	Innovate UK

(cherry picked from commit e7951d0b04e6464b37264b8166b1e9ce368a9f1d)
2024-02-09 09:55:56 -05:00
..
aarch64 Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
amd64 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
arm Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
i386 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
powerpc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
powerpc64 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
riscv Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
rtld-libc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
tests rtld: add a test for RTLD_DEEPBIND 2023-12-14 18:58:36 -06:00
debug.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
debug.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
libmap.c Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
libmap.conf Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libmap.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
Makefile Stop #defining FREEBSD_ELF 2024-01-04 16:28:48 -08:00
Makefile.depend Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
map_object.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld.1 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
rtld.c rtld-elf: Avoid unnecessary lock_restart_for_upgrade() calls 2024-02-09 09:55:56 -05:00
rtld.h RTLD_DEEPBIND: make lookup not just symbolic, but walk all refobj' DAGs 2023-12-07 02:27:19 +02:00
rtld_lock.c Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
rtld_lock.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_malloc.c Purge more stray embedded $FreeBSD$ strings 2023-10-24 10:10:12 -07:00
rtld_malloc.h rtld_malloc: add __crt_aligned_alloc_offset() 2023-08-21 17:16:42 +03:00
rtld_paths.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_printf.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_printf.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_tls.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_utrace.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
Symbol.map Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
xmalloc.c rtld: switch from malloc_aligned() to __crt_aligned_alloc() 2023-08-21 17:16:42 +03:00