x86, do_signal: Simplify the TS_RESTORE_SIGMASK logic
authorOleg Nesterov <oleg@redhat.com>
Sun, 10 Jul 2011 18:22:03 +0000 (20:22 +0200)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 15 Jul 2011 04:22:11 +0000 (21:22 -0700)
commit9b429620740945363b746414e8b9a84b8119914c
treea977c052d347f885589b9994dd74141edb761eb1
parent3982294b0342474ff91472b34c6afb701785f524
x86, do_signal: Simplify the TS_RESTORE_SIGMASK logic

1. do_signal() looks at TS_RESTORE_SIGMASK and calculates the
   mask which should be stored in the signal frame, then it
   passes "oldset" to the callees, down to setup_rt_frame().

   This is ugly, setup_rt_frame() can do this itself and nobody
   else needs this sigset_t. Move this code into setup_rt_frame.

2. do_signal() also clears TS_RESTORE_SIGMASK if handle_signal()
   succeeds.

   We can move this to setup_rt_frame() as well, this avoids the
   unnecessary checks and makes the logic more clear.

3. use set_current_blocked() instead of sigprocmask(SIG_SETMASK),
   sigprocmask() should be avoided.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Link: http://lkml.kernel.org/r/20110710182203.GA27979@redhat.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/kernel/signal.c