* [PATCH] mm: mglru: fix stale batch updates after memcg reparenting [not found] <5A9E929D82717101+12fcf643-efb8-4b9a-a53a-1e28cc894f0b@smail.nju.edu.cn> @ 2026-06-22 7:37 ` Qi Zheng 2026-06-22 8:24 ` Peiyang He 2026-06-22 22:52 ` Barry Song 0 siblings, 2 replies; 7+ messages in thread From: Qi Zheng @ 2026-06-22 7:37 UTC (permalink / raw) To: akpm, david, kasong, shakeel.butt, baohua, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, peiyang_he, mhocko, roman.gushchin, ljs Cc: linux-mm, linux-kernel, Qi Zheng, stable From: Qi Zheng <zhengqi.arch@bytedance.com> The mglru page table walker batches per-generation size deltas in walk->nr_pages while walking page tables without holding the lruvec lock. The reset_batch_size() later folds those deltas into walk->lruvec under the lruvec lock. The page table walker can run concurrently with the memcg reparenting path as follows: CPU0 CPU1 ==== ==== walk_mm --> walk_page_range --> update_batch_size --> walk->nr_pages += delta mem_cgroup_css_offline --> memcg_reparent_objcgs --> lock lruvec lru_gen_reparent_memcg --> reparent child folios to parent unlock lruvec lock lruvec reset_batch_size --> child lrugen->nr_pages += delta This can trigger the following warning: WARNING: mm/vmscan.c:5867 at lru_gen_exit_memcg+0x26f/0x300 RIP: 0010:lru_gen_exit_memcg+0x26f/0x300 mm/vmscan.c:5867 Call Trace: <TASK> mem_cgroup_free mm/memcontrol.c:3972 [inline] mem_cgroup_css_free+0x76/0xb0 mm/memcontrol.c:4241 css_free_rwork_fn+0x125/0x1260 kernel/cgroup/cgroup.c:5575 process_one_work+0xa0d/0x1c30 kernel/workqueue.c:3314 process_scheduled_works kernel/workqueue.c:3397 [inline] worker_thread+0x645/0xe80 kernel/workqueue.c:3478 kthread+0x367/0x480 kernel/kthread.c:436 ret_from_fork+0x72b/0xd50 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 </TASK> To fix it, add lrugen->reparented to remember the new owner of a reparented lruvec, and make reset_batch_size() charge pending deltas to that owner. Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn> Closes: https://lore.kernel.org/all/5A9E929D82717101+12fcf643-efb8-4b9a-a53a-1e28cc894f0b@smail.nju.edu.cn Fixes: f304652609ea ("mm: vmscan: prepare for reparenting MGLRU folios") Cc: <stable@vger.kernel.org> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> --- include/linux/mmzone.h | 4 ++++ mm/vmscan.c | 43 +++++++++++++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index ca2712187147..0d572db2ef64 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -584,6 +584,10 @@ struct lru_gen_folio { u8 gen; /* the list segment this lru_gen_folio belongs to */ u8 seg; +#ifdef CONFIG_MEMCG + /* the lruvec this lruvec has been reparented to */ + struct lruvec *reparented; +#endif /* per-node lru_gen_folio list for global reclaim */ struct hlist_nulls_node list; }; diff --git a/mm/vmscan.c b/mm/vmscan.c index 35c3bb15ae96..64362cbed814 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3262,10 +3262,37 @@ static void update_batch_size(struct lru_gen_mm_walk *walk, struct folio *folio, walk->nr_pages[new_gen][type][zone] += delta; } +#ifdef CONFIG_MEMCG +static struct lruvec *lock_batch_lruvec(struct lruvec *lruvec) +{ + struct lruvec *reparented; + + for (;;) { + lruvec_lock_irq(lruvec); + + reparented = lruvec->lrugen.reparented; + if (!reparented) + break; + + lruvec_unlock_irq(lruvec); + lruvec = reparented; + } + + return lruvec; +} +#else +static struct lruvec *lock_batch_lruvec(struct lruvec *lruvec) +{ + lruvec_lock_irq(lruvec); + + return lruvec; +} +#endif + static void reset_batch_size(struct lru_gen_mm_walk *walk) { int gen, type, zone; - struct lruvec *lruvec = walk->lruvec; + struct lruvec *lruvec = lock_batch_lruvec(walk->lruvec); struct lru_gen_folio *lrugen = &lruvec->lrugen; walk->batched = 0; @@ -3285,6 +3312,8 @@ static void reset_batch_size(struct lru_gen_mm_walk *walk) lru += LRU_ACTIVE; __update_lru_size(lruvec, lru, zone, delta); } + + lruvec_unlock_irq(lruvec); } static int should_skip_vma(unsigned long start, unsigned long end, struct mm_walk *args) @@ -3779,11 +3808,8 @@ static void walk_mm(struct mm_struct *mm, struct lru_gen_mm_walk *walk) mmap_read_unlock(mm); } - if (walk->batched) { - lruvec_lock_irq(lruvec); + if (walk->batched) reset_batch_size(walk); - lruvec_unlock_irq(lruvec); - } cond_resched(); } while (err == -EAGAIN); @@ -4563,6 +4589,8 @@ void lru_gen_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, mem_cgroup_update_lru_size(parent_lruvec, lru, zid, size); } } + + child_lruvec->lrugen.reparented = parent_lruvec; } #endif /* CONFIG_MEMCG */ @@ -4867,9 +4895,7 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec, walk = current->reclaim_state->mm_walk; if (walk && walk->batched) { walk->lruvec = lruvec; - lruvec_lock_irq(lruvec); reset_batch_size(walk); - lruvec_unlock_irq(lruvec); } mod_lruvec_state(lruvec, PGDEMOTE_KSWAPD + reclaimer_offset(sc), @@ -5784,6 +5810,9 @@ void lru_gen_init_lruvec(struct lruvec *lruvec) lrugen->max_seq = MIN_NR_GENS + 1; lrugen->enabled = lru_gen_enabled(); +#ifdef CONFIG_MEMCG + lrugen->reparented = NULL; +#endif for (i = 0; i <= MIN_NR_GENS + 1; i++) lrugen->timestamps[i] = jiffies; -- 2.54.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] mm: mglru: fix stale batch updates after memcg reparenting 2026-06-22 7:37 ` [PATCH] mm: mglru: fix stale batch updates after memcg reparenting Qi Zheng @ 2026-06-22 8:24 ` Peiyang He 2026-06-22 8:31 ` Qi Zheng 2026-06-22 22:52 ` Barry Song 1 sibling, 1 reply; 7+ messages in thread From: Peiyang He @ 2026-06-22 8:24 UTC (permalink / raw) To: Qi Zheng, akpm, david, kasong, shakeel.butt, baohua, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, mhocko, roman.gushchin, ljs Cc: linux-mm, linux-kernel, Qi Zheng, stable Hi Qi, Thanks for confirming this bug and proposing the patch. The fix I previously proposed was indeed incorrect. I have applied your patch and tested it using the PoC script that previously triggered the warning; no warning is observed anymore. Best, Peiyang On 2026/6/22 15:37, Qi Zheng wrote: > From: Qi Zheng <zhengqi.arch@bytedance.com> > > The mglru page table walker batches per-generation size deltas in > walk->nr_pages while walking page tables without holding the lruvec lock. > The reset_batch_size() later folds those deltas into walk->lruvec under > the lruvec lock. > > The page table walker can run concurrently with the memcg reparenting path > as follows: > > CPU0 CPU1 > ==== ==== > > walk_mm > --> walk_page_range > --> update_batch_size > --> walk->nr_pages += delta > > mem_cgroup_css_offline > --> memcg_reparent_objcgs > --> lock lruvec > lru_gen_reparent_memcg > --> reparent child folios to parent > unlock lruvec > > lock lruvec > reset_batch_size > --> child lrugen->nr_pages += delta > > This can trigger the following warning: > > WARNING: mm/vmscan.c:5867 at lru_gen_exit_memcg+0x26f/0x300 > RIP: 0010:lru_gen_exit_memcg+0x26f/0x300 mm/vmscan.c:5867 > Call Trace: > <TASK> > mem_cgroup_free mm/memcontrol.c:3972 [inline] > mem_cgroup_css_free+0x76/0xb0 mm/memcontrol.c:4241 > css_free_rwork_fn+0x125/0x1260 kernel/cgroup/cgroup.c:5575 > process_one_work+0xa0d/0x1c30 kernel/workqueue.c:3314 > process_scheduled_works kernel/workqueue.c:3397 [inline] > worker_thread+0x645/0xe80 kernel/workqueue.c:3478 > kthread+0x367/0x480 kernel/kthread.c:436 > ret_from_fork+0x72b/0xd50 arch/x86/kernel/process.c:158 > ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 > </TASK> > > To fix it, add lrugen->reparented to remember the new owner of a > reparented lruvec, and make reset_batch_size() charge pending deltas to > that owner. > > Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn> > Closes: https://lore.kernel.org/all/5A9E929D82717101+12fcf643-efb8-4b9a-a53a-1e28cc894f0b@smail.nju.edu.cn > Fixes: f304652609ea ("mm: vmscan: prepare for reparenting MGLRU folios") > Cc: <stable@vger.kernel.org> > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > --- > include/linux/mmzone.h | 4 ++++ > mm/vmscan.c | 43 +++++++++++++++++++++++++++++++++++------- > 2 files changed, 40 insertions(+), 7 deletions(-) > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > index ca2712187147..0d572db2ef64 100644 > --- a/include/linux/mmzone.h > +++ b/include/linux/mmzone.h > @@ -584,6 +584,10 @@ struct lru_gen_folio { > u8 gen; > /* the list segment this lru_gen_folio belongs to */ > u8 seg; > +#ifdef CONFIG_MEMCG > + /* the lruvec this lruvec has been reparented to */ > + struct lruvec *reparented; > +#endif > /* per-node lru_gen_folio list for global reclaim */ > struct hlist_nulls_node list; > }; > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 35c3bb15ae96..64362cbed814 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -3262,10 +3262,37 @@ static void update_batch_size(struct lru_gen_mm_walk *walk, struct folio *folio, > walk->nr_pages[new_gen][type][zone] += delta; > } > > +#ifdef CONFIG_MEMCG > +static struct lruvec *lock_batch_lruvec(struct lruvec *lruvec) > +{ > + struct lruvec *reparented; > + > + for (;;) { > + lruvec_lock_irq(lruvec); > + > + reparented = lruvec->lrugen.reparented; > + if (!reparented) > + break; > + > + lruvec_unlock_irq(lruvec); > + lruvec = reparented; > + } > + > + return lruvec; > +} > +#else > +static struct lruvec *lock_batch_lruvec(struct lruvec *lruvec) > +{ > + lruvec_lock_irq(lruvec); > + > + return lruvec; > +} > +#endif > + > static void reset_batch_size(struct lru_gen_mm_walk *walk) > { > int gen, type, zone; > - struct lruvec *lruvec = walk->lruvec; > + struct lruvec *lruvec = lock_batch_lruvec(walk->lruvec); > struct lru_gen_folio *lrugen = &lruvec->lrugen; > > walk->batched = 0; > @@ -3285,6 +3312,8 @@ static void reset_batch_size(struct lru_gen_mm_walk *walk) > lru += LRU_ACTIVE; > __update_lru_size(lruvec, lru, zone, delta); > } > + > + lruvec_unlock_irq(lruvec); > } > > static int should_skip_vma(unsigned long start, unsigned long end, struct mm_walk *args) > @@ -3779,11 +3808,8 @@ static void walk_mm(struct mm_struct *mm, struct lru_gen_mm_walk *walk) > mmap_read_unlock(mm); > } > > - if (walk->batched) { > - lruvec_lock_irq(lruvec); > + if (walk->batched) > reset_batch_size(walk); > - lruvec_unlock_irq(lruvec); > - } > > cond_resched(); > } while (err == -EAGAIN); > @@ -4563,6 +4589,8 @@ void lru_gen_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, > mem_cgroup_update_lru_size(parent_lruvec, lru, zid, size); > } > } > + > + child_lruvec->lrugen.reparented = parent_lruvec; > } > > #endif /* CONFIG_MEMCG */ > @@ -4867,9 +4895,7 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec, > walk = current->reclaim_state->mm_walk; > if (walk && walk->batched) { > walk->lruvec = lruvec; > - lruvec_lock_irq(lruvec); > reset_batch_size(walk); > - lruvec_unlock_irq(lruvec); > } > > mod_lruvec_state(lruvec, PGDEMOTE_KSWAPD + reclaimer_offset(sc), > @@ -5784,6 +5810,9 @@ void lru_gen_init_lruvec(struct lruvec *lruvec) > > lrugen->max_seq = MIN_NR_GENS + 1; > lrugen->enabled = lru_gen_enabled(); > +#ifdef CONFIG_MEMCG > + lrugen->reparented = NULL; > +#endif > > for (i = 0; i <= MIN_NR_GENS + 1; i++) > lrugen->timestamps[i] = jiffies; ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] mm: mglru: fix stale batch updates after memcg reparenting 2026-06-22 8:24 ` Peiyang He @ 2026-06-22 8:31 ` Qi Zheng 0 siblings, 0 replies; 7+ messages in thread From: Qi Zheng @ 2026-06-22 8:31 UTC (permalink / raw) To: Peiyang He, akpm, david, kasong, shakeel.butt, baohua, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, mhocko, roman.gushchin, ljs Cc: linux-mm, linux-kernel, Qi Zheng, stable On 6/22/26 4:24 PM, Peiyang He wrote: > Hi Qi, > > Thanks for confirming this bug and proposing the patch. The fix I previously proposed was indeed incorrect. I have applied your patch and tested it using the PoC script that previously triggered the warning; no warning is observed anymore. Good news. Thanks for testing this! ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] mm: mglru: fix stale batch updates after memcg reparenting 2026-06-22 7:37 ` [PATCH] mm: mglru: fix stale batch updates after memcg reparenting Qi Zheng 2026-06-22 8:24 ` Peiyang He @ 2026-06-22 22:52 ` Barry Song 2026-06-23 1:57 ` Qi Zheng 1 sibling, 1 reply; 7+ messages in thread From: Barry Song @ 2026-06-22 22:52 UTC (permalink / raw) To: Qi Zheng Cc: akpm, david, kasong, shakeel.butt, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, peiyang_he, mhocko, roman.gushchin, ljs, linux-mm, linux-kernel, Qi Zheng, stable On Mon, Jun 22, 2026 at 3:38 PM Qi Zheng <qi.zheng@linux.dev> wrote: > > From: Qi Zheng <zhengqi.arch@bytedance.com> > > The mglru page table walker batches per-generation size deltas in > walk->nr_pages while walking page tables without holding the lruvec lock. > The reset_batch_size() later folds those deltas into walk->lruvec under > the lruvec lock. > > The page table walker can run concurrently with the memcg reparenting path > as follows: > > CPU0 CPU1 > ==== ==== > > walk_mm > --> walk_page_range > --> update_batch_size > --> walk->nr_pages += delta > > mem_cgroup_css_offline > --> memcg_reparent_objcgs > --> lock lruvec > lru_gen_reparent_memcg > --> reparent child folios to parent > unlock lruvec > > lock lruvec > reset_batch_size > --> child lrugen->nr_pages += delta > > This can trigger the following warning: > > WARNING: mm/vmscan.c:5867 at lru_gen_exit_memcg+0x26f/0x300 > RIP: 0010:lru_gen_exit_memcg+0x26f/0x300 mm/vmscan.c:5867 I can't find 5867; instead, I can find 5828: VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); Is this the warning? > Call Trace: > <TASK> > mem_cgroup_free mm/memcontrol.c:3972 [inline] > mem_cgroup_css_free+0x76/0xb0 mm/memcontrol.c:4241 > css_free_rwork_fn+0x125/0x1260 kernel/cgroup/cgroup.c:5575 > process_one_work+0xa0d/0x1c30 kernel/workqueue.c:3314 > process_scheduled_works kernel/workqueue.c:3397 [inline] > worker_thread+0x645/0xe80 kernel/workqueue.c:3478 > kthread+0x367/0x480 kernel/kthread.c:436 > ret_from_fork+0x72b/0xd50 arch/x86/kernel/process.c:158 > ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 > </TASK> > > To fix it, add lrugen->reparented to remember the new owner of a > reparented lruvec, and make reset_batch_size() charge pending deltas to > that owner. > > Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn> > Closes: https://lore.kernel.org/all/5A9E929D82717101+12fcf643-efb8-4b9a-a53a-1e28cc894f0b@smail.nju.edu.cn > Fixes: f304652609ea ("mm: vmscan: prepare for reparenting MGLRU folios") > Cc: <stable@vger.kernel.org> > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> Looks reasonable to me. Reviewed-by: Barry Song <baohua@kernel.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] mm: mglru: fix stale batch updates after memcg reparenting 2026-06-22 22:52 ` Barry Song @ 2026-06-23 1:57 ` Qi Zheng 2026-06-23 2:15 ` Barry Song 0 siblings, 1 reply; 7+ messages in thread From: Qi Zheng @ 2026-06-23 1:57 UTC (permalink / raw) To: Barry Song Cc: akpm, david, kasong, shakeel.butt, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, peiyang_he, mhocko, roman.gushchin, ljs, linux-mm, linux-kernel, Qi Zheng, stable Hi Barry, On 6/23/26 6:52 AM, Barry Song wrote: > On Mon, Jun 22, 2026 at 3:38 PM Qi Zheng <qi.zheng@linux.dev> wrote: >> >> From: Qi Zheng <zhengqi.arch@bytedance.com> >> >> The mglru page table walker batches per-generation size deltas in >> walk->nr_pages while walking page tables without holding the lruvec lock. >> The reset_batch_size() later folds those deltas into walk->lruvec under >> the lruvec lock. >> >> The page table walker can run concurrently with the memcg reparenting path >> as follows: >> >> CPU0 CPU1 >> ==== ==== >> >> walk_mm >> --> walk_page_range >> --> update_batch_size >> --> walk->nr_pages += delta >> >> mem_cgroup_css_offline >> --> memcg_reparent_objcgs >> --> lock lruvec >> lru_gen_reparent_memcg >> --> reparent child folios to parent >> unlock lruvec >> >> lock lruvec >> reset_batch_size >> --> child lrugen->nr_pages += delta >> >> This can trigger the following warning: >> >> WARNING: mm/vmscan.c:5867 at lru_gen_exit_memcg+0x26f/0x300 >> RIP: 0010:lru_gen_exit_memcg+0x26f/0x300 mm/vmscan.c:5867 > > I can't find 5867; instead, I can find 5828: > > VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, > sizeof(lruvec->lrugen.nr_pages))); > > Is this the warning? Yes, I just copy-pasted the warning log from Peiyang's report. Maybe the description should be changed to: This will trigger the following warning in lru_gen_exit_memcg(): VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); > >> Call Trace: >> <TASK> >> mem_cgroup_free mm/memcontrol.c:3972 [inline] >> mem_cgroup_css_free+0x76/0xb0 mm/memcontrol.c:4241 >> css_free_rwork_fn+0x125/0x1260 kernel/cgroup/cgroup.c:5575 >> process_one_work+0xa0d/0x1c30 kernel/workqueue.c:3314 >> process_scheduled_works kernel/workqueue.c:3397 [inline] >> worker_thread+0x645/0xe80 kernel/workqueue.c:3478 >> kthread+0x367/0x480 kernel/kthread.c:436 >> ret_from_fork+0x72b/0xd50 arch/x86/kernel/process.c:158 >> ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 >> </TASK> >> >> To fix it, add lrugen->reparented to remember the new owner of a >> reparented lruvec, and make reset_batch_size() charge pending deltas to >> that owner. >> >> Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn> >> Closes: https://lore.kernel.org/all/5A9E929D82717101+12fcf643-efb8-4b9a-a53a-1e28cc894f0b@smail.nju.edu.cn >> Fixes: f304652609ea ("mm: vmscan: prepare for reparenting MGLRU folios") >> Cc: <stable@vger.kernel.org> >> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > > Looks reasonable to me. > Reviewed-by: Barry Song <baohua@kernel.org> Thanks! ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] mm: mglru: fix stale batch updates after memcg reparenting 2026-06-23 1:57 ` Qi Zheng @ 2026-06-23 2:15 ` Barry Song 2026-06-23 2:20 ` Qi Zheng 0 siblings, 1 reply; 7+ messages in thread From: Barry Song @ 2026-06-23 2:15 UTC (permalink / raw) To: Qi Zheng Cc: akpm, david, kasong, shakeel.butt, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, peiyang_he, mhocko, roman.gushchin, ljs, linux-mm, linux-kernel, Qi Zheng, stable On Tue, Jun 23, 2026 at 9:58 AM Qi Zheng <qi.zheng@linux.dev> wrote: > > Hi Barry, > > On 6/23/26 6:52 AM, Barry Song wrote: > > On Mon, Jun 22, 2026 at 3:38 PM Qi Zheng <qi.zheng@linux.dev> wrote: > >> > >> From: Qi Zheng <zhengqi.arch@bytedance.com> > >> > >> The mglru page table walker batches per-generation size deltas in > >> walk->nr_pages while walking page tables without holding the lruvec lock. > >> The reset_batch_size() later folds those deltas into walk->lruvec under > >> the lruvec lock. > >> > >> The page table walker can run concurrently with the memcg reparenting path > >> as follows: > >> > >> CPU0 CPU1 > >> ==== ==== > >> > >> walk_mm > >> --> walk_page_range > >> --> update_batch_size > >> --> walk->nr_pages += delta > >> > >> mem_cgroup_css_offline > >> --> memcg_reparent_objcgs > >> --> lock lruvec > >> lru_gen_reparent_memcg > >> --> reparent child folios to parent > >> unlock lruvec > >> > >> lock lruvec > >> reset_batch_size > >> --> child lrugen->nr_pages += delta > >> > >> This can trigger the following warning: > >> > >> WARNING: mm/vmscan.c:5867 at lru_gen_exit_memcg+0x26f/0x300 > >> RIP: 0010:lru_gen_exit_memcg+0x26f/0x300 mm/vmscan.c:5867 > > > > I can't find 5867; instead, I can find 5828: > > > > VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, > > sizeof(lruvec->lrugen.nr_pages))); > > > > Is this the warning? > > Yes, I just copy-pasted the warning log from Peiyang's report. > > Maybe the description should be changed to: > > This will trigger the following warning in lru_gen_exit_memcg(): > > VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, > sizeof(lruvec->lrugen.nr_pages))); > > > Yep. Can we update the v2 changelog accordingly? Best Regards Barry ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] mm: mglru: fix stale batch updates after memcg reparenting 2026-06-23 2:15 ` Barry Song @ 2026-06-23 2:20 ` Qi Zheng 0 siblings, 0 replies; 7+ messages in thread From: Qi Zheng @ 2026-06-23 2:20 UTC (permalink / raw) To: Barry Song Cc: akpm, david, kasong, shakeel.butt, axelrasmussen, yuanchu, weixugc, hannes, harry, muchun.song, peiyang_he, mhocko, roman.gushchin, ljs, linux-mm, linux-kernel, Qi Zheng, stable On 6/23/26 10:15 AM, Barry Song wrote: > On Tue, Jun 23, 2026 at 9:58 AM Qi Zheng <qi.zheng@linux.dev> wrote: >> [...] >>>> >>>> WARNING: mm/vmscan.c:5867 at lru_gen_exit_memcg+0x26f/0x300 >>>> RIP: 0010:lru_gen_exit_memcg+0x26f/0x300 mm/vmscan.c:5867 >>> >>> I can't find 5867; instead, I can find 5828: >>> >>> VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, >>> sizeof(lruvec->lrugen.nr_pages))); >>> >>> Is this the warning? >> >> Yes, I just copy-pasted the warning log from Peiyang's report. >> >> Maybe the description should be changed to: >> >> This will trigger the following warning in lru_gen_exit_memcg(): >> >> VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, >> sizeof(lruvec->lrugen.nr_pages))); >> >>> > > Yep. Can we update the v2 changelog accordingly? Sure, will do in v2. Thanks, Qi > > Best Regards > Barry ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-06-23 2:21 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <5A9E929D82717101+12fcf643-efb8-4b9a-a53a-1e28cc894f0b@smail.nju.edu.cn>
2026-06-22 7:37 ` [PATCH] mm: mglru: fix stale batch updates after memcg reparenting Qi Zheng
2026-06-22 8:24 ` Peiyang He
2026-06-22 8:31 ` Qi Zheng
2026-06-22 22:52 ` Barry Song
2026-06-23 1:57 ` Qi Zheng
2026-06-23 2:15 ` Barry Song
2026-06-23 2:20 ` Qi Zheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox