From 35e8f7ab94c910659de9d507aa0f3e1f8973d914 Mon Sep 17 00:00:00 2001 From: Paul Pluzhnikov Date: Wed, 18 Dec 2013 16:24:19 -0800 Subject: Patch 3/4 of the effort to make TLS access async-signal-safe. Factor out _dl_clear_dtv. 2013-12-18 Andrew Hunter * elf/Versions (ld): Add _dl_clear_dtv. * sysdeps/generic/ldsodefs.h (_dl_clear_dtv): New prototype. * elf/dl-tls.c (_dl_clear_dtv): New function. * nptl/allocatestack.c (get_cached_stack): Call _dl_clear_dtv. --- nptl/allocatestack.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'nptl') diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 1e0fe1f18d..96e3845088 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -242,11 +242,7 @@ get_cached_stack (size_t *sizep, void **memp) /* Clear the DTV. */ dtv_t *dtv = GET_DTV (TLS_TPADJ (result)); - for (size_t cnt = 0; cnt < dtv[-1].counter; ++cnt) - if (! dtv[1 + cnt].pointer.is_static - && dtv[1 + cnt].pointer.val != TLS_DTV_UNALLOCATED) - free (dtv[1 + cnt].pointer.val); - memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t)); + _dl_clear_dtv (dtv); /* Re-initialize the TLS. */ _dl_allocate_tls_init (TLS_TPADJ (result)); -- cgit v1.2.3-70-g09d2