freebsd-dev/libexec/rtld-elf
Konstantin Belousov 7cb32a0d03 rtld: avoid recursing on rtld_bind_lock for write
This fixes a regression in d36d681615, where the call to
__tls_get_address() was performed under rtld_bind_lock write-locked.
Instead use tls_get_addr_slow() directly, with locked = true.

Reported by:	jkim, many others
Tested by:	jkim, bdragon (powerpc), mhorne (riscv)
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D29623
2021-04-09 23:46:24 +03:00
..
aarch64 rtld: define TLS_DTV_OFFSET on all architectures 2021-04-09 23:46:24 +03:00
amd64 rtld: define TLS_DTV_OFFSET on all architectures 2021-04-09 23:46:24 +03:00
arm rtld: define TLS_DTV_OFFSET on all architectures 2021-04-09 23:46:24 +03:00
i386 rtld: define TLS_DTV_OFFSET on all architectures 2021-04-09 23:46:24 +03:00
mips rtld: define TLS_DTV_OFFSET on all architectures 2021-04-09 23:46:24 +03:00
powerpc rtld-elf(1): remove obsolete pre_init() hook 2020-12-25 19:47:46 +01:00
powerpc64 rtld-elf(1): remove obsolete pre_init() hook 2020-12-25 19:47:46 +01:00
riscv rtld-elf(1): remove obsolete pre_init() hook 2020-12-25 19:47:46 +01:00
rtld-libc rtld: avoid recursing on rtld_bind_lock for write 2021-04-09 23:46:24 +03:00
tests rtld: introduce PRELOAD_FDS 2021-03-24 23:40:48 +01:00
debug.c libexec: adoption of SPDX licensing ID tags. 2017-11-27 15:25:02 +00:00
debug.h Use rtld_putstr() instead of write() for the rtld msg() macro 2019-06-26 15:43:26 +00:00
libmap.c rtld: call close(2) after errno is saved 2021-01-02 04:43:32 +02:00
libmap.conf Move libmap.conf to libexec/rtld-elf/ 2018-09-18 00:25:00 +00:00
libmap.h rtld-elf: make it compile with WARNS=3 2018-10-29 21:08:11 +00:00
Makefile rtld-elf: link libcompiler_rt on all architectures 2020-12-28 00:44:25 -08:00
Makefile.depend new depends 2015-06-16 23:37:19 +00:00
map_object.c Undo 'fix off by one' part of r365360. 2020-09-05 22:48:27 +00:00
paths.h rtld-elf: compile with WANRS=4 warnings other than -Wcast-align 2018-10-29 21:08:19 +00:00
rtld_lock.c Use sigfastblock(2) in rtld. 2020-02-09 12:22:43 +00:00
rtld_lock.h rtld_lock.h: Expand scope for IN_RTLD to avoid some conflicts with libc 2021-04-09 23:46:23 +03:00
rtld_malloc.c Remove remnants of optimization for > pagesize allocations. 2019-09-02 08:03:29 +00:00
rtld_malloc.h Add header file missed in r343564. 2019-01-29 22:45:24 +00:00
rtld_printf.c Reduce size of rtld by 22% by pulling in less code from libc 2019-06-30 11:49:58 +00:00
rtld_printf.h Use rtld_putstr() instead of write() for the rtld msg() macro 2019-06-26 15:43:26 +00:00
rtld_tls.h Remove sparc64 specific parts of rtld-elf. 2020-02-26 18:49:25 +00:00
rtld_utrace.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
rtld.1 rtld dl_iterate_phdr(): dlpi_tls_data is wrong 2021-04-06 03:23:08 +03:00
rtld.c rtld: avoid recursing on rtld_bind_lock for write 2021-04-09 23:46:24 +03:00
rtld.h rtld: avoid recursing on rtld_bind_lock for write 2021-04-09 23:46:24 +03:00
Symbol.map rtld dl_iterate_phdr(): dlpi_tls_data is wrong 2021-04-06 03:23:08 +03:00
xmalloc.c Make p_vaddr % p_align == p_offset % p_align for (some) TLS segments. 2020-04-04 22:37:50 +00:00