Messages in this thread Patch in this message | | | Date | Wed, 20 Jun 2007 14:54:17 -0700 (PDT) | From | Davide Libenzi <> | Subject | [patch] avoid spurious POLLIN returns in signalfd |
| |
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 <davidel@xmailserver.org>
- 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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |