about summary refs log tree commit diff
path: root/elf/dl-close.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-06-25 08:09:08 +0200
committerFlorian Weimer <fweimer@redhat.com>2021-06-25 08:09:08 +0200
commit40ebfd016ad284872f434bdd76dbe9c708db4d6b (patch)
tree139a40efc4402ec670eac545278e110561f3f2d3 /elf/dl-close.c
parent66db95b6e8264c5a6307f6a9e5285fec76907254 (diff)
downloadglibc-40ebfd016ad284872f434bdd76dbe9c708db4d6b.tar.gz
glibc-40ebfd016ad284872f434bdd76dbe9c708db4d6b.tar.xz
glibc-40ebfd016ad284872f434bdd76dbe9c708db4d6b.zip
elf: Disable most of TLS modid gaps processing [BZ #27135]
Revert "elf: Fix DTV gap reuse logic [BZ #27135]"

This reverts commit 572bd547d57a39b6cf0ea072545dc4048921f4c3.

It turns out that the _dl_next_tls_modid in _dl_map_object_from_fd keeps
returning the same modid over and over again if there is a gap and
more than TLS-using module is loaded in one dlopen call.  This corrupts
TLS data structures.  The bug is still present after a revert, but
empirically it is much more difficult to trigger (because it involves a
dlopen failure).
Diffstat (limited to 'elf/dl-close.c')
-rw-r--r--elf/dl-close.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/elf/dl-close.c b/elf/dl-close.c
index 9f31532f41..3720e47dd1 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -88,11 +88,7 @@ remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
       /* If this is not the last currently used entry no need to look
 	 further.  */
       if (idx != GL(dl_tls_max_dtv_idx))
-	{
-	  /* There is an unused dtv entry in the middle.  */
-	  GL(dl_tls_dtv_gaps) = true;
-	  return true;
-	}
+	return true;
     }
 
   while (idx - disp > (disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0))