summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTejun Heo2014-02-25 16:04:03 +0100
committerTejun Heo2014-02-25 16:04:03 +0100
commit0e1d768f1b1873272ec4e8dc1482bb5281855017 (patch)
tree8c8156afaa83e9d647c0202d63112b4be6a240d1 /include
parentcgroup: update how a newly forked task gets associated with css_set (diff)
downloadkernel-qcow2-linux-0e1d768f1b1873272ec4e8dc1482bb5281855017.tar.gz
kernel-qcow2-linux-0e1d768f1b1873272ec4e8dc1482bb5281855017.tar.xz
kernel-qcow2-linux-0e1d768f1b1873272ec4e8dc1482bb5281855017.zip
cgroup: drop task_lock() protection around task->cgroups
For optimization, task_lock() is additionally used to protect task->cgroups. The optimization is pretty dubious as either css_set_rwsem is grabbed anyway or PF_EXITING already protects task->cgroups. It adds only overhead and confusion at this point. Let's drop task_[un]lock() and update comments accordingly. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/cgroup.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 4829a577c1b9..acbb9a4cb6e9 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -658,10 +658,12 @@ struct cgroup_subsys_state *css_parent(struct cgroup_subsys_state *css)
*/
#ifdef CONFIG_PROVE_RCU
extern struct mutex cgroup_mutex;
+extern struct rw_semaphore css_set_rwsem;
#define task_css_set_check(task, __c) \
rcu_dereference_check((task)->cgroups, \
- lockdep_is_held(&(task)->alloc_lock) || \
- lockdep_is_held(&cgroup_mutex) || (__c))
+ lockdep_is_held(&cgroup_mutex) || \
+ lockdep_is_held(&css_set_rwsem) || \
+ ((task)->flags & PF_EXITING) || (__c))
#else
#define task_css_set_check(task, __c) \
rcu_dereference((task)->cgroups)