From: pengdonglin <pengdong...@xiaomi.com>

Since commit a8bb74acd8efe ("rcu: Consolidate RCU-sched update-side function 
definitions")
there is no difference between rcu_read_lock(), rcu_read_lock_bh() and
rcu_read_lock_sched() in terms of RCU read section and the relevant grace
period. That means that spin_lock(), which implies rcu_read_lock_sched(),
also implies rcu_read_lock().

There is no need no explicitly start a RCU read section if one has already
been started implicitly by spin_lock().

Simplify the code and remove the inner rcu_read_lock() invocation.

Cc: Tejun Heo <t...@kernel.org>
Cc: Johannes Weiner <han...@cmpxchg.org>
Cc: Waiman Long <long...@redhat.com>
Signed-off-by: pengdonglin <pengdong...@xiaomi.com>
Signed-off-by: pengdonglin <dolinux.p...@gmail.com>
---
 kernel/cgroup/cgroup.c | 2 --
 kernel/cgroup/debug.c  | 4 ----
 2 files changed, 6 deletions(-)

diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 312c6a8b55bb..db9e00a559df 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -2944,14 +2944,12 @@ int cgroup_attach_task(struct cgroup *dst_cgrp, struct 
task_struct *leader,
 
        /* look up all src csets */
        spin_lock_irq(&css_set_lock);
-       rcu_read_lock();
        task = leader;
        do {
                cgroup_migrate_add_src(task_css_set(task), dst_cgrp, &mgctx);
                if (!threadgroup)
                        break;
        } while_each_thread(leader, task);
-       rcu_read_unlock();
        spin_unlock_irq(&css_set_lock);
 
        /* prepare dst csets and commit */
diff --git a/kernel/cgroup/debug.c b/kernel/cgroup/debug.c
index 80aa3f027ac3..81ea38dd6f9d 100644
--- a/kernel/cgroup/debug.c
+++ b/kernel/cgroup/debug.c
@@ -49,7 +49,6 @@ static int current_css_set_read(struct seq_file *seq, void *v)
                return -ENODEV;
 
        spin_lock_irq(&css_set_lock);
-       rcu_read_lock();
        cset = task_css_set(current);
        refcnt = refcount_read(&cset->refcount);
        seq_printf(seq, "css_set %pK %d", cset, refcnt);
@@ -67,7 +66,6 @@ static int current_css_set_read(struct seq_file *seq, void *v)
                seq_printf(seq, "%2d: %-4s\t- %p[%d]\n", ss->id, ss->name,
                          css, css->id);
        }
-       rcu_read_unlock();
        spin_unlock_irq(&css_set_lock);
        cgroup_kn_unlock(of->kn);
        return 0;
@@ -95,7 +93,6 @@ static int current_css_set_cg_links_read(struct seq_file 
*seq, void *v)
                return -ENOMEM;
 
        spin_lock_irq(&css_set_lock);
-       rcu_read_lock();
        cset = task_css_set(current);
        list_for_each_entry(link, &cset->cgrp_links, cgrp_link) {
                struct cgroup *c = link->cgrp;
@@ -104,7 +101,6 @@ static int current_css_set_cg_links_read(struct seq_file 
*seq, void *v)
                seq_printf(seq, "Root %d group %s\n",
                           c->root->hierarchy_id, name_buf);
        }
-       rcu_read_unlock();
        spin_unlock_irq(&css_set_lock);
        kfree(name_buf);
        return 0;
-- 
2.34.1

Reply via email to