X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fum%2Fkernel%2Fsignal_user.c;h=62f457835fb1dcb576eb50b43b86faae2de1df51;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=74a69e491e000cf7400ccdc6d65534188afe968d;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/arch/um/kernel/signal_user.c b/arch/um/kernel/signal_user.c index 74a69e491..62f457835 100644 --- a/arch/um/kernel/signal_user.c +++ b/arch/um/kernel/signal_user.c @@ -41,6 +41,7 @@ void set_handler(int sig, void (*handler)(int), int flags, ...) while((mask = va_arg(ap, int)) != -1){ sigaddset(&action.sa_mask, mask); } + va_end(ap); action.sa_flags = flags; action.sa_restorer = NULL; if(sigaction(sig, &action, NULL) < 0) @@ -57,6 +58,10 @@ int change_sig(int signal, int on) return(!sigismember(&old, signal)); } +/* Both here and in set/get_signal we don't touch SIGPROF, because we must not + * disable profiling; it's safe because the profiling code does not interact + * with the kernel code at all.*/ + static void change_signals(int type) { sigset_t mask; @@ -65,7 +70,6 @@ static void change_signals(int type) sigaddset(&mask, SIGVTALRM); sigaddset(&mask, SIGALRM); sigaddset(&mask, SIGIO); - sigaddset(&mask, SIGPROF); if(sigprocmask(type, &mask, NULL) < 0) panic("Failed to change signal mask - errno = %d", errno); }