On 06/12, Eric W. Biederman wrote: > David Laight <David.Laight@xxxxxxxxxx> writes: > > > From: Oleg Nesterov > >> Sent: 12 June 2019 14:46 > >> On 06/11, David Laight wrote: > >> > > >> > If I have an application that has a loop with a pselect call that > >> > enables SIGINT (without a handler) and, for whatever reason, > >> > one of the fd is always 'ready' then I'd expect a SIGINT > >> > (from ^C) to terminate the program. > > I think this gets into a quality of implementation. > > I suspect that set_user_sigmask should do: > if (signal_pending()) > return -ERESTARNOSIGHAND; /* -EINTR that restarts if nothing was pending */ > > Which should be safe as nothing has blocked yet to consume any of the > timeouts, and it should ensure that none of the routines miss a signal. Why? I don't think this makes any sense. Perhaps we could do this _after_ set_current_blocked() for the case when the already pending SIGINT was unblocked but a) I am not sure this would be really better and b) I think it is too late to change this. Oleg.