The new code in kernel/signal.c does not allow fetching private signals from another task. This patch avoid spurious POLLIN returns from a signalfd poll(2) operation.
Signed-off-by: Davide Libenzi <[EMAIL PROTECTED]> - Davide --- fs/signalfd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: linux-2.6.mod/fs/signalfd.c =================================================================== --- linux-2.6.mod.orig/fs/signalfd.c 2007-06-20 13:08:25.000000000 -0700 +++ linux-2.6.mod/fs/signalfd.c 2007-06-20 13:09:00.000000000 -0700 @@ -133,7 +133,8 @@ * the peer disconnects. */ if (signalfd_lock(ctx, &lk)) { - if (next_signal(&lk.tsk->pending, &ctx->sigmask) > 0 || + if ((lk.tsk == current && + next_signal(&lk.tsk->pending, &ctx->sigmask) > 0) || next_signal(&lk.tsk->signal->shared_pending, &ctx->sigmask) > 0) events |= POLLIN; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/