|
@@ -378,7 +378,7 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
|
|
|
/* We only dequeue private signals from ourselves, we don't let
|
|
|
* signalfd steal them
|
|
|
*/
|
|
|
- if (tsk == current)
|
|
|
+ if (likely(tsk == current))
|
|
|
signr = __dequeue_signal(&tsk->pending, mask, info);
|
|
|
if (!signr) {
|
|
|
signr = __dequeue_signal(&tsk->signal->shared_pending,
|
|
@@ -425,7 +425,7 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
|
|
|
if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT))
|
|
|
tsk->signal->flags |= SIGNAL_STOP_DEQUEUED;
|
|
|
}
|
|
|
- if ( signr &&
|
|
|
+ if (signr && likely(tsk == current) &&
|
|
|
((info->si_code & __SI_MASK) == __SI_TIMER) &&
|
|
|
info->si_sys_private){
|
|
|
/*
|