aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-11-17 16:04:29 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2018-03-05 18:08:27 -0300
commit68448be208ee06e76665918b37b0a57e3e00c8b4 (patch)
tree07c9ed97d7afa4a6516db76079638e7329c12504 /ChangeLog
parent8d965cde7a2bc18a010325607f6f526db86cdaf0 (diff)
downloadglibc-68448be208ee06e76665918b37b0a57e3e00c8b4.zip
glibc-68448be208ee06e76665918b37b0a57e3e00c8b4.tar.gz
glibc-68448be208ee06e76665918b37b0a57e3e00c8b4.tar.bz2
i386: Fix i386 sigaction sa_restorer initialization (BZ#21269)
This patch fixes the i386 sa_restorer field initialization for sigaction syscall for kernel with vDSO. As described in bug report, i386 Linux (and compat on x86_64) interprets SA_RESTORER clear with nonzero sa_restorer as a request for stack switching if the SS segment is 'funny'. This means that anything that tries to mix glibc's signal handling with segmentation (for instance through modify_ldt syscall) is randomly broken depending on what values lands in sa_restorer. The testcase added is based on Linux test tools/testing/selftests/x86/ldt_gdt.c, more specifically in do_multicpu_tests function. The main changes are: - C11 atomics instead of plain access. - Remove x86_64 support which simplifies the syscall handling and fallbacks. - Replicate only the test required to trigger the issue. Checked on i686-linux-gnu. [BZ #21269] * sysdeps/unix/sysv/linux/i386/Makefile (tests): Add tst-bz21269. * sysdeps/unix/sysv/linux/i386/sigaction.c (SET_SA_RESTORER): Clear sa_restorer for vDSO case. * sysdeps/unix/sysv/linux/i386/tst-bz21269.c: New file.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog8
1 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e0639e9..f54496f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2018-03-03 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ [BZ #21269]
+ * sysdeps/unix/sysv/linux/i386/Makefile (tests): Add tst-bz21269.
+ * sysdeps/unix/sysv/linux/i386/sigaction.c (SET_SA_RESTORER): Clear
+ sa_restorer for vDSO case.
+ * sysdeps/unix/sysv/linux/i386/tst-bz21269.c: New file.
+
2018-03-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
* scripts/check-installed-headers.sh: Ignore Hurd and Mach headers.