Re: [PATCH v1 13/26] mm: mglru: prevent memory cgroup release in mglru
From: Qi Zheng
Date: Thu Nov 20 2025 - 08:39:25 EST
On 11/19/25 6:13 PM, Harry Yoo wrote:
On Tue, Oct 28, 2025 at 09:58:26PM +0800, Qi Zheng wrote:
From: Muchun Song <songmuchun@xxxxxxxxxxxxx>
In the near future, a folio will no longer pin its corresponding
memory cgroup. To ensure safety, it will only be appropriate to
hold the rcu read lock or acquire a reference to the memory cgroup
returned by folio_memcg(), thereby preventing it from being released.
In the current patch, the rcu read lock is employed to safeguard
against the release of the memory cgroup in mglru.
This serves as a preparatory measure for the reparenting of the
LRU pages.
Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
Signed-off-by: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx>
---
mm/vmscan.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 660cd40cfddd4..676e6270e5b45 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -4279,6 +4288,8 @@ bool lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
arch_leave_lazy_mmu_mode();
+ rcu_read_unlock();
+
/* feedback from rmap walkers to page table walkers */
if (mm_state && suitable_to_scan(i, young))
update_bloom_filter(mm_state, max_seq, pvmw->pmd);
mm_state has the same life cycle as mem_cgroup. So it should be
protected by rcu read lock?
You are right. The mm_state is defined as follows:
struct lruvec {
struct lru_gen_mm_state mm_state;
};
will fix it in the next version.
Thanks,
Qi