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    [W:0.026 / U:30.728 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site