Messages in this thread | | | Date | Thu, 19 May 2011 18:27:41 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 07/10] ptrace: make group stop state visible via PTRACE_GETSIGINFO |
| |
On 05/16, Tejun Heo wrote: > > static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) > { > + struct signal_struct *sig; > unsigned long flags; > int error; > > if (!lock_task_sighand(child, &flags)) > return -ESRCH; > + sig = child->signal; > > error = -EINVAL; > if (!child->last_siginfo) > @@ -585,6 +587,23 @@ static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) > > error = 0; > *info = *child->last_siginfo; > + > + /* > + * If reporting ptrace trap for a seized tracee, enable reporting > + * of info->si_pt_flags. > + */ > + if ((child->ptrace & PT_SEIZED) && > + (info->si_code & __SI_MASK) == __SI_TRAP) { > + /* > + * Report whether group stop is in effect w/ SI_STOPPED and > + * if so which signal caused it. > + */ > + if (sig->group_stop_count || sig->flags & SIGNAL_STOP_STOPPED) {
Cosmetic nit, you could declare "struct signal_struct *sig" here, under if (PT_SEIZED && __SI_TRAP).
I must admit, personally I still dislike this new PTRACE_GETSIGINFO API... But I can't suggest anything better, so I am not going to argue.
Oleg.
| |