Davide - the *real* problem is (I think) that you try to allow signals to
be returned *both* by signalfd() and as a real signal.
That's wrong, wrong, wrong.
My original patch used "dequeue_signal()" to dequeue signals. Trust me, I
did that for a reason. Your re-design to think that you can get the signal
without using the real signal dequeueing is simply broken.
The signalfd must be an "either or" thing. Either you get it as a real
signal, or you get it off the signalfd(). Not both. Not neither.
Linus
-