diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2009-01-07 21:07:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-08 11:31:02 -0500 |
commit | 104cbd55377029e70fc2cee01089e84b9c36e5dc (patch) | |
tree | 60c7d0d9625b74f6a2733a9618cc97dc772848f5 /kernel | |
parent | b2aa30f7bb381e04c93eed106089ba55553955f1 (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')
-rw-r--r-- | kernel/cgroup.c | 2 |
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 */ |