From: GNU Libc Maintainers Date: Sat, 17 Sep 2016 18:00:44 +0000 (+0000) Subject: cvs-libpthread-sigstate X-Git-Tag: archive/raspbian/2.25-3+rpi1~1^2^2^2^2^2^2^2^2^2^2^2^2~74 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=158e53712871daa7ec5554b0d21c829753d8f28f;p=glibc.git cvs-libpthread-sigstate commit 6106225fdc09f013ec4f7b1d7ec82780061c8a14 Author: Samuel Thibault Date: Sun Jan 3 04:20:02 2016 +0100 Do not block unmaskable signals * sysdeps/mach/hurd/pt-sigstate.c (__pthread_sigstate): Always remove _SIG_CANT_MASK from blocked signals, like sigprocmask does. Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name cvs-libpthread-sigstate.diff --- diff --git a/libpthread/sysdeps/mach/hurd/pt-sigstate.c b/libpthread/sysdeps/mach/hurd/pt-sigstate.c index 2af3e396e..74fd72a2c 100644 --- a/libpthread/sysdeps/mach/hurd/pt-sigstate.c +++ b/libpthread/sysdeps/mach/hurd/pt-sigstate.c @@ -43,24 +43,27 @@ __pthread_sigstate (struct __pthread *thread, int how, *oset = ss->blocked; if (set) - switch (how) - { - case SIG_BLOCK: - ss->blocked |= *set; - break; - - case SIG_SETMASK: - ss->blocked = *set; - break; - - case SIG_UNBLOCK: - ss->blocked &= ~*set; - break; - - default: - err = EINVAL; - break; - } + { + switch (how) + { + case SIG_BLOCK: + ss->blocked |= *set; + break; + + case SIG_SETMASK: + ss->blocked = *set; + break; + + case SIG_UNBLOCK: + ss->blocked &= ~*set; + break; + + default: + err = EINVAL; + break; + } + ss->blocked &= ~_SIG_CANT_MASK; + } if (! err && clear_pending) __sigemptyset (&ss->pending);