glibc/sysdeps/unix
Adhemerval Zanella 68448be208 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.
2018-03-05 18:08:27 -03:00
..
alpha Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
arm Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bsd Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
i386 Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
inet Remove add-ons mechanism. 2017-10-05 15:58:13 +00:00
mips Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
powerpc Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sysv/linux i386: Fix i386 sigaction sa_restorer initialization (BZ#21269) 2018-03-05 18:08:27 -03:00
x86_64 Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
clock_gettime.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
clock_nanosleep.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
clock_settime.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
confstr.h
get_child_max.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getlogin_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getlogin.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getpagesize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
grantpt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ifreq.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Implies
make-syscalls.sh Fix make-syscalls.sh VDSO support for GCC 8. 2017-09-26 21:21:01 +00:00
Makefile Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s-proto-cancel.S
s-proto.S
setxid.h
sockatmark.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stime.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syscall-template.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syscall.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syscalls.list posix: Consolidate Linux fsync syscall 2017-05-18 18:06:47 -03:00
sysdep.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00