On 11/19, Andrei Vagin wrote: > > case PTRACE_SETSIGMASK: { > sigset_t new_set; > @@ -962,6 +971,8 @@ int ptrace_request(struct task_struct *child, long > request, > child->blocked = new_set; > spin_unlock_irq(&child->sighand->siglock); > > + clear_tsk_restore_sigmask(child); > +
I am not sure I understand this change... I forgot everything I knew about criu, but iiuc PTRACE_SETSIGMASK is used at "restore" time, doesn't this mean that TIF_RESTORE_SIGMASK/restore_sigmask can not be set? IOW, could you please explain how PTRACE_SETSIGMASK should be used, and why it doesn't do something like if (test_tsk_restore_sigmask(child)) child->saved_sigmask = new_set; else child->blocked = new_set; which looks symmetrical to PTRACE_GETSIGMASK? Oleg.