diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2010-03-10 01:22:08 +0300 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2010-03-10 01:22:08 +0300 |
commit | e739cf1da48e841bc5d744a99764c1a668b4bdd2 (patch) | |
tree | 1d39318bbbcdd66ad8cd34823ad9befb7af08b1f /include/linux/cgroup.h | |
parent | e7b184f199fd3c80b618ec8244cbda70857d2779 (diff) | |
parent | 57d54889cd00db2752994b389ba714138652e60c (diff) | |
download | linux-e739cf1da48e841bc5d744a99764c1a668b4bdd2.tar.xz |
Merge commit 'v2.6.34-rc1' into for-2.6.35-incoming
Diffstat (limited to 'include/linux/cgroup.h')
-rw-r--r-- | include/linux/cgroup.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 0008dee66514..c9bbcb2a75ae 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -28,6 +28,7 @@ struct css_id; extern int cgroup_init_early(void); extern int cgroup_init(void); extern void cgroup_lock(void); +extern int cgroup_lock_is_held(void); extern bool cgroup_lock_live_group(struct cgroup *cgrp); extern void cgroup_unlock(void); extern void cgroup_fork(struct task_struct *p); @@ -486,7 +487,9 @@ static inline struct cgroup_subsys_state *cgroup_subsys_state( static inline struct cgroup_subsys_state *task_subsys_state( struct task_struct *task, int subsys_id) { - return rcu_dereference(task->cgroups->subsys[subsys_id]); + return rcu_dereference_check(task->cgroups->subsys[subsys_id], + rcu_read_lock_held() || + cgroup_lock_is_held()); } static inline struct cgroup* task_cgroup(struct task_struct *task, |