glibc/sysdeps/unix
Nick Alcock 7a25d6a84d x86, pthread_cond_*wait: Do not depend on %eax not being clobbered
The x86-specific versions of both pthread_cond_wait and
pthread_cond_timedwait have (in their fall-back-to-futex-wait slow
paths) calls to __pthread_mutex_cond_lock_adjust followed by
__pthread_mutex_unlock_usercnt, which load the parameters before the
first call but then assume that the first parameter, in %eax, will
survive unaffected.  This happens to have been true before now, but %eax
is a call-clobbered register, and this assumption is not safe: it could
change at any time, at GCC's whim, and indeed the stack-protector canary
checking code clobbers %eax while checking that the canary is
uncorrupted.

So reload %eax before calling __pthread_mutex_unlock_usercnt.  (Do this
unconditionally, even when stack-protection is not in use, because it's
the right thing to do, it's a slow path, and anything else is dicing
with death.)

	* sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S: Reload
	call-clobbered %eax on retry path.
	* sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S: Likewise.
2016-03-23 13:40:14 +01:00
..
alpha Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
arm Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
bsd Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
i386 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
inet Move nss directory into sysdeps Subdirs. 2013-02-05 14:32:48 -08:00
mips Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
powerpc Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sh Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sysv/linux x86, pthread_cond_*wait: Do not depend on %eax not being clobbered 2016-03-23 13:40:14 +01:00
x86_64 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
clock_gettime.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
clock_nanosleep.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
clock_settime.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
confstr.h initial import 1995-02-18 01:27:10 +00:00
get_child_max.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
getlogin_r.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
getlogin.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
getpagesize.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
grantpt.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
ifreq.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Implies initial import 1995-02-18 01:27:10 +00:00
make-syscalls.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
Makefile Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
s-proto-cancel.S * sysdeps/unix/Makefile: Include $(common-objpfx)s-proto-cancel.d. 2002-12-30 00:12:56 +00:00
s-proto.S Thu Jan 18 00:32:43 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu> 1996-01-19 00:42:21 +00:00
setxid.h Update. 2004-11-12 01:27:04 +00:00
sockatmark.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
stime.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
syscall-template.S Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
syscall.S Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
syscalls.list Fix nice getpriority, setpriority namespace (bug 18553). 2015-06-17 20:22:39 +00:00
sysdep.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00