mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 06:34:12 +08:00
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> Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
58e78475ec
commit
f8738c5c52
@ -133,7 +133,8 @@ static unsigned int signalfd_poll(struct file *file, poll_table *wait)
|
||||
* 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;
|
||||
|
Loading…
Reference in New Issue
Block a user