Re: [PATCH 1/1] ptrace: do_notify_parent_cldstop: fix the wrong ->nsproxy usage

Oleg Nesterov
2009-05-26T21:40:55Z

On 05/26, Roland McGrath wrote:
>
> Acked-by: Roland McGrath <roland@redhat.com>
>
> Yes, all cases setting .si_pid should set it using the pid_ns of the
> recipient. Numerous other cases look wrong too, though maybe Sukadev has
> outstanding patches for those already? (It's been a while since we went
> around on this, and I am fuzzy on some of the details.) ptrace_notify,
> ptrace_signal,

Yes. Perhaps it would be nice to add a helper,

task_pid_xxx(struct task_struct child, struct task_struct *parent)
{
rcu_read_lock();
ret = task_pid_nr_ns(tsk, parent->nsproxy->pid_ns);
rcu_read_unlock();

return ret;
}

ptrace_notify/ptrace_signal can race with untrace + clear ->nsproxy,
probably we don't care.

> sys_kill, do_tkill all look wrong to me.

They should be fine, note the

if (from_ancestor_ns)
q->info.si_pid = 0;

in __send_signal(). If we send the signal "down" to the sub-namespace,
si_pid == 0 is correct. And, unlike do_notify_parent/ptrace_notify/etc
kill/tkill can't send the signal "up".

Oleg.