[lkml]   [2011]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH][BUGFIX] cgroups: more safe tasklist locking in cgroup_attach_proc
    On Mon, Aug 15, 2011 at 08:49:57PM +0200, Oleg Nesterov wrote:
    > On 07/29, Ben Blum wrote:
    > >
    > > According to this thread - - RCU is
    > > not sufficient to guarantee the tasklist is stable w.r.t. de_thread and
    > > exit. Taking tasklist_lock for reading, instead of rcu_read_lock,
    > > ensures proper exclusion.
    > Yes.
    > So far I still think we should fix while_each_thread() so that it works
    > under rcu_read_lock() "as exepected", I'll try to think more.
    > But whatever we do with while_each_thread(), this can't help
    > cgroup_attach_proc(), it needs the locking.
    > > - rcu_read_lock();
    > > + read_lock(&tasklist_lock);
    > > if (!thread_group_leader(leader)) {
    > Agreed, this should work.
    > But can't we avoid the global list? thread_group_leader() or not, we do
    > not really care. We only need to ensure we can safely find all threads.
    > How about the patch below?
    > With or without this/your patch this leader can die right after we
    > drop the lock. ss->can_attach(leader) and ss->attach(leader) look
    > suspicious. If a sub-thread execs, this task_struct has nothing to
    > do with the threadgroup.
    > Also. This is off-topic, but... Why cgroup_attach_proc() and
    > cgroup_attach_task() do ->attach_task() + cgroup_task_migrate()
    > in the different order? cgroup_attach_proc() looks wrong even
    > if currently doesn't matter.

    Right. As we concluded in our off-list discussion, if there
    is no strong reason for that, I'm going to fix that in my task
    counter patchset because there it really matters. If we can't
    migrate the thread because it has already exited, we really
    don't want to call ->attach_task() but rather cancel_attach_task().


     \ /
      Last update: 2011-08-16 00:53    [W:3.229 / U:0.128 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site