diff --git a/mm/list_lru.c b/mm/list_lru.c index fc938d8ff48f..885ae5d77002 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -76,6 +76,7 @@ list_lru_from_kmem(struct list_lru *lru, int nid, void *ptr, struct list_lru_node *nlru = &lru->node[nid]; struct list_lru_one *l = &nlru->lru; struct mem_cgroup *memcg = NULL; + int kmemcg_id; if (!lru->mlrus) goto out; @@ -84,7 +85,12 @@ list_lru_from_kmem(struct list_lru *lru, int nid, void *ptr, if (!memcg) goto out; - l = list_lru_from_memcg_idx(lru, nid, memcg_cache_id(memcg)); + kmemcg_id = memcg_kmem_id(memcg); + l = list_lru_from_memcg_idx(lru, nid, kmemcg_id); + if (!l) { + pr_info("BUG: the memcg(%px)->objcg(%px), kmemcg_id: %d\n", + memcg, memcg->objcg, kmemcg_id); + } out: if (memcg_ptr) *memcg_ptr = memcg;