vserver 1.9.5.x5
[linux-2.6.git] / arch / um / kernel / signal_user.c
index 74a69e4..62f4578 100644 (file)
@@ -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);
 }