]> sourceware.org Git - glibc.git/commit
Avoid late dlopen failure due to scope, TLS slotinfo updates [BZ #25112]
authorFlorian Weimer <fweimer@redhat.com>
Wed, 27 Nov 2019 15:37:17 +0000 (16:37 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Wed, 27 Nov 2019 19:55:35 +0000 (20:55 +0100)
commita509eb117fac1d764b15eba64993f4bdb63d7f3c
tree072758cc02e49c7982abb01bc4a62106358188ad
parent440b7f8653e4ed8f6e1425145208050b795e9a6c
Avoid late dlopen failure due to scope, TLS slotinfo updates [BZ #25112]

This change splits the scope and TLS slotinfo updates in dlopen into
two parts: one to resize the data structures, and one to actually apply
the update.  The call to add_to_global_resize in dl_open_worker is moved
before the demarcation point at which no further memory allocations are
allowed.

_dl_add_to_slotinfo is adjusted to make the list update optional.  There
is some optimization possibility here because we could grow the slotinfo
list of arrays in a single call, one the largest TLS modid is known.

This commit does not fix the fatal meory allocation failure in
_dl_update_slotinfo.  Ideally, this error during dlopen should be
recoverable.

The update order of scopes and TLS data structures is retained, although
it appears to be more correct to fully initialize TLS first, and then
expose symbols in the newly loaded objects via the scope update.

Tested on x86_64-linux-gnu.

Change-Id: I240c58387dabda3ca1bcab48b02115175fa83d6c
elf/dl-open.c
elf/dl-tls.c
elf/rtld.c
sysdeps/generic/ldsodefs.h
This page took 0.040024 seconds and 5 git commands to generate.