We should not check for SIGCANCEL in __libc_sigaction because nptl calls this function to setup this signal. Nptl provides it's own override for sigaction that checks that the user cannot override signals nptl uses internally. Linuxthreads does not use SIGCANCEL at all so this affects nptl only.
Signed-off-by: Timo Teräs <[email protected]> diff --git a/libc/sysdeps/linux/i386/sigaction.c b/libc/sysdeps/linux/i386/sigaction.c index 602f759..d9c2477 100644 --- a/libc/sysdeps/linux/i386/sigaction.c +++ b/libc/sysdeps/linux/i386/sigaction.c @@ -41,12 +41,6 @@ int __libc_sigaction(int sig, const struct sigaction *act, struct sigaction *oac { struct sigaction kact; -#ifdef SIGCANCEL - if (sig == SIGCANCEL) { - __set_errno(EINVAL); - return -1; - } -#endif if (act) { memcpy(&kact, act, sizeof(kact)); kact.sa_flags |= SA_RESTORER; @@ -68,13 +62,7 @@ int __libc_sigaction(int sig, const struct sigaction *act, struct sigaction *oac { int result; struct old_kernel_sigaction kact, koact; - -#ifdef SIGCANCEL - if (sig == SIGCANCEL) { - __set_errno(EINVAL); - return -1; - } -#endif + if (act) { kact.k_sa_handler = act->sa_handler; kact.sa_mask = act->sa_mask.__val[0]; diff --git a/libc/sysdeps/linux/x86_64/sigaction.c b/libc/sysdeps/linux/x86_64/sigaction.c index d1adbc4..91df04e 100644 --- a/libc/sysdeps/linux/x86_64/sigaction.c +++ b/libc/sysdeps/linux/x86_64/sigaction.c @@ -70,13 +70,6 @@ __libc_sigaction(int sig, const struct sigaction *act, struct sigaction *oact) int result; struct old_kernel_sigaction kact, koact; -#ifdef SIGCANCEL - if (sig == SIGCANCEL) { - __set_errno(EINVAL); - return -1; - } -#endif - if (act) { kact.k_sa_handler = act->sa_handler; kact.sa_mask = act->sa_mask.__val[0]; _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
