diff --git a/[refs] b/[refs] index ad4107aff6e9..0d1a10921060 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bd197234b0a616c8f04f6b682326a5a24b33ca92 +refs/heads/master: caec4e8dc85e0644ec24aeb36285e1ba02da58cc diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index fe590e00db8d..f9405609774e 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -363,7 +363,13 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, */ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) { - int signr = __dequeue_signal(&tsk->pending, mask, info); + int signr = 0; + + /* We only dequeue private signals from ourselves, we don't let + * signalfd steal them + */ + if (tsk == current) + signr = __dequeue_signal(&tsk->pending, mask, info); if (!signr) { signr = __dequeue_signal(&tsk->signal->shared_pending, mask, info);