cgroups: remove rcu_read_lock() in cgroupstats_build()
authorLai Jiangshan <[email protected]>
Thu, 8 Jan 2009 02:07:40 +0000 (18:07 -0800)
committerLinus Torvalds <[email protected]>
Thu, 8 Jan 2009 16:31:03 +0000 (08:31 -0800)
cgroup_iter_* do not need rcu_read_lock().

In cgroup_enable_task_cg_lists(), do_each_thread() and while_each_thread()
are protected by RCU, it's OK, for write_lock(&css_set_lock) implies
rcu_read_lock() in non-RT kernel.

If we need explicit rcu_read_lock(), we should add rcu_read_lock() in
cgroup_enable_task_cg_lists(), not cgroup_iter_*.

Signed-off-by: Lai Jiangshan <[email protected]>
Acked-by: Paul Menage <[email protected]>
Cc: KAMEZAWA Hiroyuki <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Balbir Singh <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
kernel/cgroup.c

index 61e92c5867ea03d9e26bb4c3bfc35717de350234..f55af3daffc26d105cada4bfd697f75ffa65ee43 100644 (file)
@@ -2055,7 +2055,6 @@ int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry)
 
        ret = 0;
        cgrp = dentry->d_fsdata;
-       rcu_read_lock();
 
        cgroup_iter_start(cgrp, &it);
        while ((tsk = cgroup_iter_next(cgrp, &it))) {
@@ -2080,7 +2079,6 @@ int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry)
        }
        cgroup_iter_end(cgrp, &it);
 
-       rcu_read_unlock();
 err:
        return ret;
 }