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.