Przeglądaj źródła

nptl: fix libc sigaction signal checking

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 <timo.teras@iki.fi>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Timo Teräs 14 lat temu
rodzic
commit
9c9652debb

+ 0 - 12
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;
@@ -69,12 +63,6 @@ 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];

+ 0 - 7
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];