aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/signal.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index fe590e00db8d..f9405609774e 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -363,7 +363,13 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask,
363 */ 363 */
364int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) 364int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
365{ 365{
366 int signr = __dequeue_signal(&tsk->pending, mask, info); 366 int signr = 0;
367
368 /* We only dequeue private signals from ourselves, we don't let
369 * signalfd steal them
370 */
371 if (tsk == current)
372 signr = __dequeue_signal(&tsk->pending, mask, info);
367 if (!signr) { 373 if (!signr) {
368 signr = __dequeue_signal(&tsk->signal->shared_pending, 374 signr = __dequeue_signal(&tsk->signal->shared_pending,
369 mask, info); 375 mask, info);