|
@@ -879,16 +879,20 @@ static bool prepare_signal(int sig, struct task_struct *p, bool force)
|
|
|
* as soon as they're available, so putting the signal on the shared queue
|
|
|
* will be equivalent to sending it to one such thread.
|
|
|
*/
|
|
|
-static inline int wants_signal(int sig, struct task_struct *p)
|
|
|
+static inline bool wants_signal(int sig, struct task_struct *p)
|
|
|
{
|
|
|
if (sigismember(&p->blocked, sig))
|
|
|
- return 0;
|
|
|
+ return false;
|
|
|
+
|
|
|
if (p->flags & PF_EXITING)
|
|
|
- return 0;
|
|
|
+ return false;
|
|
|
+
|
|
|
if (sig == SIGKILL)
|
|
|
- return 1;
|
|
|
+ return true;
|
|
|
+
|
|
|
if (task_is_stopped_or_traced(p))
|
|
|
- return 0;
|
|
|
+ return false;
|
|
|
+
|
|
|
return task_curr(p) || !signal_pending(p);
|
|
|
}
|
|
|
|