musl/src
Rich Felker de7e99c585 make pointers used in robust list volatile
when manipulating the robust list, the order of stores matters,
because the code may be asynchronously interrupted by a fatal signal
and the kernel will then access the robust list in what is essentially
an async-signal context.

previously, aliasing considerations made it seem unlikely that a
compiler could reorder the stores, but proving that they could not be
reordered incorrectly would have been extremely difficult. instead
I've opted to make all the pointers used as part of the robust list,
including those in the robust list head and in the individual mutexes,
volatile.

in addition, the format of the robust list has been changed to point
back to the head at the end, rather than ending with a null pointer.
this is to match the documented kernel robust list ABI. the null
pointer, which was previously used, only worked because faults during
access terminate the robust list processing.
2014-08-17 00:46:26 -04:00
..
aio eliminate use of cached pid from thread structure 2014-07-05 23:29:55 -04:00
complex complex: add C11 CMPLX macros and replace cpack with them 2012-11-13 01:31:49 +01:00
conf remove unsupported nonstandard sysconf macros and their table entries 2014-05-19 12:18:16 -04:00
crypt add legacy functions setkey() and encrypt() 2014-02-05 11:09:53 -05:00
ctype add inline isspace in ctype.h as an optimization 2014-08-13 16:47:51 +02:00
dirent fix readdir not to set ENOENT when directory is removed while reading 2014-02-25 13:05:38 -05:00
env fix #ifdef inside a macro argument list in __init_tls.c 2014-08-13 17:07:44 +02:00
errno add support for LC_TIME and LC_MESSAGES translations 2014-07-26 05:36:25 -04:00
exit remove useless infinite loop from end of exit function 2014-07-17 21:37:10 -04:00
fcntl avoid invalid use of va_arg in open 2014-06-06 15:43:16 -04:00
fenv add nofpu subarchs to the sh arch, and properly detect compiler's fpu config 2014-02-27 23:18:42 -05:00
internal make pointers used in robust list volatile 2014-08-17 00:46:26 -04:00
ipc semctl: fix UB causing crashes on powerpc 2014-03-13 20:52:34 +01:00
ldso add dlerror message for static-linked dlsym failure 2014-08-08 00:53:27 -04:00
legacy fix multiple issues in legacy function getpass 2014-07-06 01:34:13 -04:00
linux fix missing argument to syscall in fanotify_mark 2014-06-14 00:10:16 -04:00
locale add inline isspace in ctype.h as an optimization 2014-08-13 16:47:51 +02:00
malloc avoid malloc failure for small requests when brk can't be extended 2014-04-02 17:57:15 -04:00
math math: fix aliasing violation in long double wrappers 2014-04-11 18:07:08 +02:00
misc make endmntent function handle null argument 2014-08-08 00:45:10 -04:00
mman optimize locking against vm changes for mmap/munmap 2014-08-16 02:41:45 -04:00
mq use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
multibyte fix aliasing violations in mbtowc and mbrtowc 2014-07-01 18:27:19 -04:00
network reimplement if_nameindex and getifaddrs using netlink 2014-07-29 20:57:31 -04:00
passwd include cleanups: remove unused headers and add feature test macros 2013-12-12 05:09:18 +00:00
prng fix initstate to make the state buffer usable in setstate 2014-01-21 02:01:35 +01:00
process eliminate use of cached pid from thread structure 2014-07-05 23:29:55 -04:00
regex add support for LC_TIME and LC_MESSAGES translations 2014-07-26 05:36:25 -04:00
sched remove useless __yield alias for sched_yield 2014-05-04 13:15:27 -04:00
search remove struct elem entirely from hsearch.c 2014-04-02 18:49:24 -04:00
select support linux kernel apis (new archs) with old syscalls removed 2014-05-29 21:01:32 -04:00
setjmp add or1k (OpenRISC 1000) architecture port 2014-07-18 14:10:23 -04:00
signal add or1k (OpenRISC 1000) architecture port 2014-07-18 14:10:23 -04:00
stat fix missing flags arg to fstatat syscall in fstat fallback path 2014-07-18 15:24:04 -04:00
stdio work around constant folding bug 61144 in gcc 4.9.0 and 4.9.1 2014-07-16 21:32:06 -04:00
stdlib include cleanups: remove unused headers and add feature test macros 2013-12-12 05:09:18 +00:00
string add support for LC_TIME and LC_MESSAGES translations 2014-07-26 05:36:25 -04:00
temp include cleanups: remove unused headers and add feature test macros 2013-12-12 05:09:18 +00:00
termios include cleanups: remove unused headers and add feature test macros 2013-12-12 05:09:18 +00:00
thread make pointers used in robust list volatile 2014-08-17 00:46:26 -04:00
time properly pass current locale to *_l functions when used internally 2014-07-02 21:46:41 -04:00
unistd support linux kernel apis (new archs) with old syscalls removed 2014-05-29 21:01:32 -04:00