mm: multi-gen LRU: improve lru_gen_exit_memcg()
authorT.J. Alumbaugh <talumbau@google.com>
Wed, 18 Jan 2023 00:18:25 +0000 (00:18 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 3 Feb 2023 06:33:27 +0000 (22:33 -0800)
Add warnings and poison ->next.

Link: https://lkml.kernel.org/r/20230118001827.1040870-6-talumbau@google.com
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 796d4ca65e979e77c626cefb0741f59e9602dbf3..c2e6ad53447bc56859f01da8950170b6839931ae 100644 (file)
@@ -6168,12 +6168,17 @@ void lru_gen_exit_memcg(struct mem_cgroup *memcg)
        int i;
        int nid;
 
+       VM_WARN_ON_ONCE(!list_empty(&memcg->mm_list.fifo));
+
        for_each_node(nid) {
                struct lruvec *lruvec = get_lruvec(memcg, nid);
 
+               VM_WARN_ON_ONCE(lruvec->mm_state.nr_walkers);
                VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0,
                                           sizeof(lruvec->lrugen.nr_pages)));
 
+               lruvec->lrugen.list.next = LIST_POISON1;
+
                for (i = 0; i < NR_BLOOM_FILTERS; i++) {
                        bitmap_free(lruvec->mm_state.filters[i]);
                        lruvec->mm_state.filters[i] = NULL;