diff options
author | Tejun Heo | 2014-02-25 16:04:03 +0100 |
---|---|---|
committer | Tejun Heo | 2014-02-25 16:04:03 +0100 |
commit | 0e1d768f1b1873272ec4e8dc1482bb5281855017 (patch) | |
tree | 8c8156afaa83e9d647c0202d63112b4be6a240d1 /include | |
parent | cgroup: update how a newly forked task gets associated with css_set (diff) | |
download | kernel-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.h | 6 |
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) |