signals: sys_ssetmask() uses uninitialized newmask
authorOleg Nesterov <oleg@redhat.com>
Sat, 5 Jan 2013 18:13:13 +0000 (19:13 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 6 Jan 2013 03:34:54 +0000 (19:34 -0800)
Commit 77097ae503b1 ("most of set_current_blocked() callers want
SIGKILL/SIGSTOP removed from set") removed the initialization of newmask
by accident, causing ltp to complain like this:

  ssetmask01    1  TFAIL  :  sgetmask() failed: TEST_ERRNO=???(0): Success

Restore the proper initialization.

Reported-and-tested-by: CAI Qian <caiqian@redhat.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: stable@kernel.org # v3.5+
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/signal.c

index 7aaa51d8e5b8895f047651caa0b021a6e7a88113..9692499c77cf8575494c844b170c1d1aea6d3afd 100644 (file)
@@ -3286,6 +3286,7 @@ SYSCALL_DEFINE1(ssetmask, int, newmask)
        int old = current->blocked.sig[0];
        sigset_t newset;
 
+       siginitset(&newset, newmask);
        set_current_blocked(&newset);
 
        return old;