lkml.org 
[lkml]   [2012]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC] fs, proc: Introduce /proc/<pid>/task/<tid>/children entry v5
On Sun, Jan 15, 2012 at 07:07:21PM +0100, Oleg Nesterov wrote:
> On 12/28, Cyrill Gorcunov wrote:
> >
> > When we do checkpoint of a task we need to know the list of children
> > the task has but there is no easy way to make a reverse parent->children
> > chain from an arbitrary <pid> (while a parent pid is provided in "PPid"
> > field of /proc/<pid>/status).
>
> Looks correct at first glance... But I'll try to recheck. I guess you need
> to resend anyway, I bet nobody can recall this patch ;)
>

Sure ;)

> However I do not understand the ptrace_may_access() check at all.
>
...

> Well, this is cosmetic, but imho
>
> if (list_is_last(...))
> goto out;
>
> task = list_first_entry(...);
> ...
>
> looks better.
>

ok

>
> > + list_for_each_entry(task, &start->children, sibling) {
> > + if (pos-- == 0) {
> > + if (ptrace_may_access(task, PTRACE_MODE_READ)) {
> > + pid = get_pid(task_pid(task));
> > + goto out;
> > + } else {
> > + /* Maybe we success with the next children */
> > + pos++;
>
> Again. I simply can't understand what ptrace_may_access() actually
> means. Why do we use the possible child, not parent?
>
> IOW. I have no idea if we really need any security check at all.
> You can find the children pids without this patch anyway via.
> grep PPid /proc/*/status.
>

OK, I see. I am actually not sure which behaviour should be there.
What should we do if say we have a task with a number of children,
which changed permissions of own and some of children. Look what I mean.

We have say tid A, which has children B C D, and when we read
/proc/pid/task/tid/children we should see "B C D" here. But
what if say A started with roots rights, then changed own permission
so everyone could read this /proc/pid/task/<A>/children, but
left C with root permissions only. So should we list C here?
Or such scenario is impossible at all?

> But if you want ptrace_may_access/whatever, you should check
> ptrace_may_access(start), no?
>

Cyrill


\
 
 \ /
  Last update: 2012-01-15 19:33    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site