From: Rich Felker Date: Mon, 2 Sep 2013 19:19:37 +0000 (-0400) Subject: fix mips-specific bug in synccall (too little space for signal mask) X-Git-Tag: v0.9.14~46 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b4b9743c0003b9538cbc90c602f55c0ed3f16d17;p=oweals%2Fmusl.git fix mips-specific bug in synccall (too little space for signal mask) switch to the new __block_all_sigs/__restore_sigs internal API to clean up the code too. --- diff --git a/src/thread/synccall.c b/src/thread/synccall.c index 90ad1e25..4127a413 100644 --- a/src/thread/synccall.c +++ b/src/thread/synccall.c @@ -43,7 +43,7 @@ void __synccall(void (*func)(void *), void *ctx) pthread_t self; struct sigaction sa; struct chain *next; - uint64_t oldmask; + sigset_t oldmask; if (!libc.threads_minus_1) { func(ctx); @@ -52,8 +52,7 @@ void __synccall(void (*func)(void *), void *ctx) __inhibit_ptc(); - __syscall(SYS_rt_sigprocmask, SIG_BLOCK, SIGALL_SET, - &oldmask, _NSIG/8); + __block_all_sigs(&oldmask); sem_init(&chaindone, 0, 0); sem_init(&chainlock, 0, 1); @@ -86,8 +85,7 @@ void __synccall(void (*func)(void *), void *ctx) sem_post(&cur->sem); } - __syscall(SYS_rt_sigprocmask, SIG_SETMASK, - &oldmask, 0, _NSIG/8); + __restore_sigs(&oldmask); __release_ptc(); }