On 06/07, Eric W. Biederman wrote: > > +static int set_sigmask(sigset_t *kmask) > +{ > + set_restore_sigmask(); > + current->saved_sigmask = current->blocked; > + set_current_blocked(kmask); > + > + return 0; > +} I was going to do the same change except my version returns void ;) So ACK. As for 2-5, sorry I can't read them today, will do tomorrow. But at first glance... yes, we can remove TIF_RESTORE_SIGMASK. As for "remove saved_sigmask" I have some concerns... At least this means a user-visible change iiuc. Say, pselect unblocks a fatal signal. Say, SIGINT without a handler. Suppose SIGINT comes after set_sigmask(). Before this change the process will be killed. After this change it will be killed or not. It won't be killed if do_select() finds an already ready fd without blocking, or it finds a ready fd right after SIGINT interrupts poll_schedule_timeout(). And _to me_ the new behaviour makes more sense. But when it comes to user-visible changes you can never know if it breaks something or not. Oleg.