Messages in this thread |  | | | Date | Sat, 29 Mar 2008 13:39:29 +0300 | | From | Oleg Nesterov <> | | Subject | Re: [PATCH 2/2] ptrace children revamp | |
I didn't read the patch yet (will do), just a minor nit right now,
On 03/28, Roland McGrath wrote:
>
> @@ -1528,19 +1534,11 @@ static int do_wait_thread(struct task_struct *tsk, int *retval,
> return 1;
> }
>
> - /*
> - * If we never saw an eligile child, check for children stolen by
> - * ptrace. We don't leave -ECHILD in *@retval if there are any,
> - * because we will eventually be allowed to wait for them again.
> - */
> - if (*retval)
> - list_for_each_entry(p, &tsk->ptrace_children, ptrace_list) {
> - int ret = eligible_child(type, pid, options, p);
> - if (ret) {
> - *retval = unlikely(ret < 0) ? ret : 0;
> - break;
> - }
> - }
> + list_for_each_entry(p, &tsk->ptrace_attach, ptrace_list) {
> + if (wait_consider_task(tsk, p, retval, type, pid, options,
> + infop, stat_addr, ru))
> + return 1;
> + }
Afaics, this adds a minor pessimization. We shouldn't scan ->ptrace_attach
list if it was already found that another thread has a "hidden" task.
Oleg.
|  |