Messages in this thread | | | Date | Sat, 23 Apr 2011 20:12:31 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH v2 7/7] x86: signal: sys_rt_sigreturn() should use set_current_blocked() |
| |
On 04/22, Matt Fleming wrote: > > On Mon, 18 Apr 2011 15:46:41 +0200 > Oleg Nesterov <oleg@redhat.com> wrote: > > > Normally sys_rt_sigreturn() restores the old current->blocked which was > > changed by handle_signal(), and unblocking is always fine. > > > > But the debugger or application itself can change frame->uc_sigmask and > > thus we need set_current_blocked()->retarget_shared_pending(). > > > > Signed-off-by: Oleg Nesterov <oleg@redhat.com> > > Reviewed-by: Matt Fleming <matt.fleming@linux.intel.com>
Thanks Matt.
> But does sys_sigreturn() also need this change?
Of course, it needs. From 0/7:
Once again: if we need this, then we need a lot more (trivial) changes like 6/7 and 7/7. Basically every change of ->blocked should be converted to use set_current_blocked().
6 and 7 are simple examples, most of the other changes will look similary.
Except sys_rt_sigtimedwait(), it changes both ->real_blocked and blocked, see the patches I sent. sys_sigprocmask() is a bit annoying, but the necessary changes are simple.
Oleg.
| |