about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2016-04-22 09:25:20 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.com>2016-07-13 17:08:51 +0100
commit2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd (patch)
tree5b425337c8ccc0f0cb878df1f599fa3a2974f01d /ChangeLog
parente15eaa8f335ebfd565ab7752c64f3415d427d9b2 (diff)
downloadglibc-2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd.tar.gz
glibc-2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd.tar.xz
glibc-2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd.zip
Refactor Linux raise implementation (BZ#15368)
This patch changes both the nptl and libc Linux raise implementation
to avoid the issues described in BZ#15368.  The strategy used is
summarized in bug report first comment:

 1. Block all signals (including internal NPTL ones);
 2. Get pid and tid directly from syscall (not relying on cached
    values);
 3. Call tgkill;
 4. Restore old signal mask.

Tested on x86_64 and i686.

	[BZ #15368]
	* sysdeps/unix/sysv/linux/nptl-signals.h
	(__nptl_clear_internal_signals): New function.
	(__libc_signal_block_all): Likewise.
	(__libc_signal_block_app): Likewise.
	(__libc_signal_restore_set): Likewise.
	* sysdeps/unix/sysv/linux/pt-raise.c (raise): Use Linux raise.c
	implementation.
	* sysdeps/unix/sysv/linux/raise.c (raise): Reimplement to not use
	the cached pid/tid value in pthread structure.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog13
1 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ed5daf1de6..4bc8a61bdf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2016-07-13  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+	[BZ #15368]
+	* sysdeps/unix/sysv/linux/nptl-signals.h
+	(__nptl_clear_internal_signals): New function.
+	(__libc_signal_block_all): Likewise.
+	(__libc_signal_block_app): Likewise.
+	(__libc_signal_restore_set): Likewise.
+	* sysdeps/unix/sysv/linux/pt-raise.c (raise): Use Linux raise.c
+	implementation.
+	* sysdeps/unix/sysv/linux/raise.c (raise): Reimplement to not use
+	the cached pid/tid value in pthread structure.
+
 2016-07-13  H.J. Lu  <hongjiu.lu@intel.com>
 
 	[BZ #20347]