Skip to content
Commit ba33937b authored by Adhemerval Zanella's avatar Adhemerval Zanella
Browse files

elf: Fix DTV gap reuse logic (BZ #27135)



This is updated version of the 572bd547 (reverted by 40ebfd01)
that fixes the _dl_next_tls_modid issues.

This issue with 572bd547 patch is the DTV entry will be only
update on dl_open_worker() with the update_tls_slotinfo() call after
all dependencies are being processed by _dl_map_object_deps().  However
_dl_map_object_deps() itself might call _dl_next_tls_modid(), and since
the _dl_tls_dtv_slotinfo_list::map is not yet set the entry will be
wrongly reused.

This patch fixes by renaming the _dl_next_tls_modid() function to
_dl_assign_tls_modid() and by passing the link_map so it can set
the slotinfo value so a subsequente _dl_next_tls_modid() call will
see the entry as allocated.

The intermediary value is cleared up on remove_slotinfo() for the case
a library fails to load with RTLD_NOW.

This patch fixes BZ #27135.

Checked on x86_64-linux-gnu.

Reviewed-by: default avatarSzabolcs Nagy <szabolcs.nagy@arm.com>
parent 0e1f0681
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment