diff options
author | Michal Hocko <mhocko@suse.cz> | 2011-07-08 08:39:41 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-07-08 16:21:58 -0400 |
commit | d8bf4ca9ca9576548628344c9725edd3786e90b1 (patch) | |
tree | df338f50a5af6bc3651bd863b79fa91e6b1e9e20 /kernel/cgroup.c | |
parent | eb032b9837a958e21ca000358a5bde5e17192ddb (diff) |
rcu: treewide: Do not use rcu_read_lock_held when calling rcu_dereference_check
Since ca5ecddf (rcu: define __rcu address space modifier for sparse)
rcu_dereference_check use rcu_read_lock_held as a part of condition
automatically so callers do not have to do that as well.
Signed-off-by: Michal Hocko <mhocko@suse.cz>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'kernel/cgroup.c')
-rw-r--r-- | kernel/cgroup.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 2731d115d725..5ae71d6e274b 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
@@ -1697,7 +1697,6 @@ int cgroup_path(const struct cgroup *cgrp, char *buf, int buflen) | |||
1697 | { | 1697 | { |
1698 | char *start; | 1698 | char *start; |
1699 | struct dentry *dentry = rcu_dereference_check(cgrp->dentry, | 1699 | struct dentry *dentry = rcu_dereference_check(cgrp->dentry, |
1700 | rcu_read_lock_held() || | ||
1701 | cgroup_lock_is_held()); | 1700 | cgroup_lock_is_held()); |
1702 | 1701 | ||
1703 | if (!dentry || cgrp == dummytop) { | 1702 | if (!dentry || cgrp == dummytop) { |
@@ -1723,7 +1722,6 @@ int cgroup_path(const struct cgroup *cgrp, char *buf, int buflen) | |||
1723 | break; | 1722 | break; |
1724 | 1723 | ||
1725 | dentry = rcu_dereference_check(cgrp->dentry, | 1724 | dentry = rcu_dereference_check(cgrp->dentry, |
1726 | rcu_read_lock_held() || | ||
1727 | cgroup_lock_is_held()); | 1725 | cgroup_lock_is_held()); |
1728 | if (!cgrp->parent) | 1726 | if (!cgrp->parent) |
1729 | continue; | 1727 | continue; |
@@ -4813,8 +4811,7 @@ unsigned short css_id(struct cgroup_subsys_state *css) | |||
4813 | * on this or this is under rcu_read_lock(). Once css->id is allocated, | 4811 | * on this or this is under rcu_read_lock(). Once css->id is allocated, |
4814 | * it's unchanged until freed. | 4812 | * it's unchanged until freed. |
4815 | */ | 4813 | */ |
4816 | cssid = rcu_dereference_check(css->id, | 4814 | cssid = rcu_dereference_check(css->id, atomic_read(&css->refcnt)); |
4817 | rcu_read_lock_held() || atomic_read(&css->refcnt)); | ||
4818 | 4815 | ||
4819 | if (cssid) | 4816 | if (cssid) |
4820 | return cssid->id; | 4817 | return cssid->id; |
@@ -4826,8 +4823,7 @@ unsigned short css_depth(struct cgroup_subsys_state *css) | |||
4826 | { | 4823 | { |
4827 | struct css_id *cssid; | 4824 | struct css_id *cssid; |
4828 | 4825 | ||
4829 | cssid = rcu_dereference_check(css->id, | 4826 | cssid = rcu_dereference_check(css->id, atomic_read(&css->refcnt)); |
4830 | rcu_read_lock_held() || atomic_read(&css->refcnt)); | ||
4831 | 4827 | ||
4832 | if (cssid) | 4828 | if (cssid) |
4833 | return cssid->depth; | 4829 | return cssid->depth; |