diff --git a/mm/list_lru.c b/mm/list_lru.c index c669d87001a6..ddb2ee627d32 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -67,6 +67,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 (!list_lru_memcg_aware(lru)) goto out; @@ -75,7 +76,13 @@ 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_kmem_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); + BUG(); + } out: if (memcg_ptr) *memcg_ptr = memcg;