aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/cgroup.c
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2009-01-07 21:07:38 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-08 11:31:02 -0500
commit104cbd55377029e70fc2cee01089e84b9c36e5dc (patch)
tree60c7d0d9625b74f6a2733a9618cc97dc772848f5 /kernel/cgroup.c
parentb2aa30f7bb381e04c93eed106089ba55553955f1 (diff)
cgroups: use task_lock() for access tsk->cgroups safe in cgroup_clone()
Use task_lock() protect tsk->cgroups and get_css_set(tsk->cgroups). Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Acked-by: Paul Menage <menage@google.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Pavel Emelyanov <xemul@openvz.org> Cc: Balbir Singh <balbir@in.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/cgroup.c')
-rw-r--r--kernel/cgroup.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index a288da176e46..00d5136d38c2 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2903,6 +2903,7 @@ int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *subsys,
2903 mutex_unlock(&cgroup_mutex); 2903 mutex_unlock(&cgroup_mutex);
2904 return 0; 2904 return 0;
2905 } 2905 }
2906 task_lock(tsk);
2906 cg = tsk->cgroups; 2907 cg = tsk->cgroups;
2907 parent = task_cgroup(tsk, subsys->subsys_id); 2908 parent = task_cgroup(tsk, subsys->subsys_id);
2908 2909
@@ -2915,6 +2916,7 @@ int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *subsys,
2915 2916
2916 /* Keep the cgroup alive */ 2917 /* Keep the cgroup alive */
2917 get_css_set(cg); 2918 get_css_set(cg);
2919 task_unlock(tsk);
2918 mutex_unlock(&cgroup_mutex); 2920 mutex_unlock(&cgroup_mutex);
2919 2921
2920 /* Now do the VFS work to create a cgroup */ 2922 /* Now do the VFS work to create a cgroup */