Skip to contentSkip to conversation

mm/memcontrol: remove the unnecessary rcu_read_[un]lock

PATCH In review Hui Su 2 participants 2 messages Dec 16, 2020

Subsystems (3)
lore
Share & tools
lore

Hui Su

author
#0 lore raw

PATCH 1/1 mm/memcontrol: remove the unnecessary rcu_read_[un]lock

the rcu_read_lock and rcu_read_unlock is unnecessary in:
lock_page_lruvec() lock_page_lruvec_irq() lock_page_lruvec_irqsave()

---
 mm/memcontrol.c | 6 ------
 1 file changed, 6 deletions(-)
mm/memcontrol.c +0 -6
index e3c7ca7dc174..a19f820e8a3f 100644
@@ -1396,10 +1396,8 @@ struct lruvec *lock_page_lruvec(struct page *page)
 	struct lruvec *lruvec;
 	struct pglist_data *pgdat = page_pgdat(page);
 
-	rcu_read_lock();
 	lruvec = mem_cgroup_page_lruvec(page, pgdat);
 	spin_lock(&lruvec->lru_lock);
-	rcu_read_unlock();
 
 	lruvec_memcg_debug(lruvec, page);
 
@@ -1411,10 +1409,8 @@ struct lruvec *lock_page_lruvec_irq(struct page *page)
 	struct lruvec *lruvec;
 	struct pglist_data *pgdat = page_pgdat(page);
 
-	rcu_read_lock();
 	lruvec = mem_cgroup_page_lruvec(page, pgdat);
 	spin_lock_irq(&lruvec->lru_lock);
-	rcu_read_unlock();
 
 	lruvec_memcg_debug(lruvec, page);
 
@@ -1426,10 +1422,8 @@ struct lruvec *lock_page_lruvec_irqsave(struct page *page, unsigned long *flags)
 	struct lruvec *lruvec;
 	struct pglist_data *pgdat = page_pgdat(page);
 
-	rcu_read_lock();
 	lruvec = mem_cgroup_page_lruvec(page, pgdat);
 	spin_lock_irqsave(&lruvec->lru_lock, *flags);
-	rcu_read_unlock();
 
 	lruvec_memcg_debug(lruvec, page);
 
Signature · 1 line
2.29.2
#1 lore raw
Quoted 4 lines · Hui Su

the rcu_read_lock and rcu_read_unlock is unnecessary in:
lock_page_lruvec() lock_page_lruvec_irq() lock_page_lruvec_irqsave()

Please add an explanation why it is unnecessary.

Quoted 44 lines
---
 mm/memcontrol.c | 6 ------
 1 file changed, 6 deletions(-)
mm/memcontrol.c +0 -6
index e3c7ca7dc174..a19f820e8a3f 100644
@@ -1396,10 +1396,8 @@ struct lruvec *lock_page_lruvec(struct page *page)
 	struct lruvec *lruvec;
 	struct pglist_data *pgdat = page_pgdat(page);
 
-	rcu_read_lock();
 	lruvec = mem_cgroup_page_lruvec(page, pgdat);
 	spin_lock(&lruvec->lru_lock);
-	rcu_read_unlock();
 
 	lruvec_memcg_debug(lruvec, page);
 
@@ -1411,10 +1409,8 @@ struct lruvec *lock_page_lruvec_irq(struct page *page)
 	struct lruvec *lruvec;
 	struct pglist_data *pgdat = page_pgdat(page);
 
-	rcu_read_lock();
 	lruvec = mem_cgroup_page_lruvec(page, pgdat);
 	spin_lock_irq(&lruvec->lru_lock);
-	rcu_read_unlock();
 
 	lruvec_memcg_debug(lruvec, page);
 
@@ -1426,10 +1422,8 @@ struct lruvec *lock_page_lruvec_irqsave(struct page *page, unsigned long *flags)
 	struct lruvec *lruvec;
 	struct pglist_data *pgdat = page_pgdat(page);
 
-	rcu_read_lock();
 	lruvec = mem_cgroup_page_lruvec(page, pgdat);
 	spin_lock_irqsave(&lruvec->lru_lock, *flags);
-	rcu_read_unlock();
 
 	lruvec_memcg_debug(lruvec, page);
 
Signature · 1 line
2.29.2
Signature · 2 lines
Michal Hocko
SUSE Labs