On 05/23, David Laight wrote: > > I'm confused... Me too. To clarify, the current code is obviously buggy, pselect/whatever shouldn't return 0 (or anything else) if it was interrupted and we are going to deliver the signal. But it seems that Deepa has other concerns which I do not understand at all. In any case, the signal_pending() check _inside_ restore_user_sigmask() can't be right, with or without this patch. If nothing else, a signal can come right after the check. > So epoll() can return 'success' or 'timeout' (etc) and the handler for SIG_URG > should still be called. Not sure I understand... OK, suppose that you do block-all-signals; ret = pselect(..., sigmask(SIG_URG)); if it returns success/timeout then the handler for SIG_URG should not be called? or I am totally confused... Oleg.