about summary refs log tree commit diff
path: root/src/thread/pthread_sigmask.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-08-09 22:52:13 -0400
committerRich Felker <dalias@aerifal.cx>2012-08-09 22:52:13 -0400
commit2f437040e7911d9bef239588ea7ed6f4b9102922 (patch)
treecfb4950352818b7a3ed2f5be9d9425bbb0b7cd3a /src/thread/pthread_sigmask.c
parent83b42d94bd1009da6a95052d9ef0edeb1c73c8e4 (diff)
downloadmusl-2f437040e7911d9bef239588ea7ed6f4b9102922.tar.gz
musl-2f437040e7911d9bef239588ea7ed6f4b9102922.tar.xz
musl-2f437040e7911d9bef239588ea7ed6f4b9102922.zip
fix (hopefully) all hard-coded 8's for kernel sigset_t size
some minor changes to how hard-coded sets for thread-related purposes
are handled were also needed, since the old object sizes were not
necessarily sufficient. things have gotten a bit ugly in this area,
and i think a cleanup is in order at some point, but for now the goal
is just to get the code working on all supported archs including mips,
which was badly broken by linux rejecting syscalls with the wrong
sigset_t size.
Diffstat (limited to 'src/thread/pthread_sigmask.c')
-rw-r--r--src/thread/pthread_sigmask.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/thread/pthread_sigmask.c b/src/thread/pthread_sigmask.c
index decc38f8..cddc2bca 100644
--- a/src/thread/pthread_sigmask.c
+++ b/src/thread/pthread_sigmask.c
@@ -6,8 +6,8 @@
 int pthread_sigmask(int how, const sigset_t *set, sigset_t *old)
 {
 	int ret;
-	if (how > 2U) return EINVAL;
-	ret = -__syscall(SYS_rt_sigprocmask, how, set, old, 8);
+	if ((unsigned)how - SIG_BLOCK > 2U) return EINVAL;
+	ret = -__syscall(SYS_rt_sigprocmask, how, set, old, __SYSCALL_SSLEN);
 	if (!ret && old) {
 		if (sizeof old->__bits[0] == 8) {
 			old->__bits[0] &= ~0x380000000ULL;