2012/10/18 Tejun Heo <tj@xxxxxxxxxx>: > From d935a5d6832a264ce52f4257e176f4f96cbaf048 Mon Sep 17 00:00:00 2001 > From: Tejun Heo <tj@xxxxxxxxxx> > Date: Thu, 18 Oct 2012 17:40:30 -0700 > > This reverts commit 7e3aa30ac8c904a706518b725c451bb486daaae9. > > The commit incorrectly assumed that fork path always performed > threadgroup_change_begin/end() and depended on that for > synchronization against task exit and cgroup migration paths instead > of explicitly grabbing task_lock(). > > threadgroup_change is not locked when forking a new process (as > opposed to a new thread in the same process) and even if it were it > wouldn't be effective as different processes use different threadgroup > locks. > > Revert the incorrect optimization. Ok but there is still no good reason to task_lock() there. But the comment is indeed wrong, how about fixing it instead? I can send you a patch for that. > > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> > LKML-Reference: <20121008020000.GB2575@localhost> > Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx> > Cc: Li Zefan <lizefan@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > kernel/cgroup.c | 15 +++------------ > 1 files changed, 3 insertions(+), 12 deletions(-) > > diff --git a/kernel/cgroup.c b/kernel/cgroup.c > index d1739fc..2990dc7 100644 > --- a/kernel/cgroup.c > +++ b/kernel/cgroup.c > @@ -4894,19 +4894,10 @@ void cgroup_post_fork(struct task_struct *child) > */ > if (use_task_css_set_links) { > write_lock(&css_set_lock); > - if (list_empty(&child->cg_list)) { > - /* > - * It's safe to use child->cgroups without task_lock() > - * here because we are protected through > - * threadgroup_change_begin() against concurrent > - * css_set change in cgroup_task_migrate(). Also > - * the task can't exit at that point until > - * wake_up_new_task() is called, so we are protected > - * against cgroup_exit() setting child->cgroup to > - * init_css_set. > - */ > + task_lock(child); > + if (list_empty(&child->cg_list)) > list_add(&child->cg_list, &child->cgroups->tasks); > - } > + task_unlock(child); > write_unlock(&css_set_lock); > } > } > -- > 1.7.7.3 > _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers