Cleanup and preparation for the next change. signal_wake_up(resume => true) is overused. None of ptrace/jctl callers actually want to wakeup a TASK_WAKEKILL task, but they can't specify the necessary mask. Turn signal_wake_up() into signal_wake_up_state(state), reintroduce signal_wake_up() as a trivial helper, and add ptrace_signal_wake_up() which adds __TASK_TRACED. This way ptrace_signal_wake_up() can work "inside" ptrace_request() even if the tracee doesn't have the TASK_WAKEKILL bit set.
Showing the changes to include/linux (1 of 3 files). Show all
Unified · Split
| @@ -2714,7 +2714,16 @@ static inline void thread_group_cputime_init(struct signal_struct *sig) · 2713 unmodified lines | ||
| 2714 | 2714 | extern void recalc_sigpending_and_wake(struct task_struct *t); |
| 2715 | 2715 | extern void recalc_sigpending(void); |
| 2716 | 2716 | |
| 2717 | −extern void signal_wake_up(struct task_struct *t, int resume_stopped); | |
| 2717 | +extern void signal_wake_up_state(struct task_struct *t, unsigned int state); | |
| 2718 | + | |
| 2719 | +static inline void signal_wake_up(struct task_struct *t, bool resume) | |
| 2720 | +{ | |
| 2721 | + signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0); | |
| 2722 | +} | |
| 2723 | +static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume) | |
| 2724 | +{ | |
| 2725 | + signal_wake_up_state(t, resume ? __TASK_TRACED : 0); | |
| 2726 | +} | |
| 2718 | 2727 | |
| 2719 | 2728 | /* |
| 2720 | 2729 | * Wrappers for p->thread_info->cpu access. No-op on UP. |