lkml.org 
[lkml]   [2007]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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/
\
 
 \ /
  Last update: 2007-06-20 23:57    [W:0.029 / U:0.060 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site