Hi all, On Wed, 25 Nov 2020 20:15:11 +0800 Alex Shi wrote: > > Acked-by: Alex Shi > > > 在 2020/11/25 下午7:22, Lorenzo Stoakes 写道: > > Move memcg check to mem_cgroup_page_lruvec() as there are callers which > > may invoke this with !memcg in mem_cgroup_lruvec(), whereas they should > > not in mem_cgroup_page_lruvec(). > > > > We expect that we have always charged a page to the memcg before > > mem_cgroup_page_lruvec() is invoked, so add a warning to assert that this > > is the case. > > > > Signed-off-by: Lorenzo Stoakes > > Reported-by: syzbot+ce635500093181f39c1c@syzkaller.appspotmail.com > > --- > > include/linux/memcontrol.h | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > > index 87ed56dc75f9..3e6a1df3bdb9 100644 > > --- a/include/linux/memcontrol.h > > +++ b/include/linux/memcontrol.h > > @@ -618,7 +618,6 @@ static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg, > > goto out; > > } > > > > - VM_WARN_ON_ONCE(!memcg); > > if (!memcg) > > memcg = root_mem_cgroup; > > > > @@ -645,7 +644,10 @@ static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg, > > static inline struct lruvec *mem_cgroup_page_lruvec(struct page *page, > > struct pglist_data *pgdat) > > { > > - return mem_cgroup_lruvec(page_memcg(page), pgdat); > > + struct mem_cgroup *memcg = page_memcg(page); > > + > > + VM_WARN_ON_ONCE_PAGE(!memcg, page); > > + return mem_cgroup_lruvec(memcg, pgdat); > > } > > > > static inline bool lruvec_holds_page_lru_lock(struct page *page, > > I have added that patch to the akpm tree in linux-next today as a fix for "mm/memcg: add missed warning in mem_cgroup_lruvec". Andrew: the original patch is here: https://lore.kernel.org/lkml/20201125112202.387009-1-lstoakes@gmail.com/ -- Cheers, Stephen Rothwell