signals: sys_ssetmask/sys_rt_sigsuspend should use set_current_blocked()
authorOleg Nesterov <oleg@redhat.com>
Wed, 27 Jul 2011 19:49:44 +0000 (12:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 27 Jul 2011 19:53:36 +0000 (12:53 -0700)
commitc1095c6da518b0b64e724f629051fa67655cd8d9
tree8c2e33ca6c8e3caa71437c3b69b36a8cf03b4f08
parent678624e401b0b7747762b5223fb23f86dcdacc93
signals: sys_ssetmask/sys_rt_sigsuspend should use set_current_blocked()

sys_ssetmask(), sys_rt_sigsuspend() and compat_sys_rt_sigsuspend()
change ->blocked directly.  This is not correct, see the changelog in
e6fa16ab "signal: sigprocmask() should do retarget_shared_pending()"

Change them to use set_current_blocked().

Another change is that now we are doing ->saved_sigmask = ->blocked
lockless, it doesn't make any sense to do this under ->siglock.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Matt Fleming <matt.fleming@linux.intel.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/compat.c
kernel/signal.c