diff --git a/mm/workingset.c b/mm/workingset.c index e9f05634747a..6a45e98317e9 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -272,8 +272,13 @@ static bool lru_gen_test_recent(void *shadow, struct lruvec **lruvec, unpack_shadow(shadow, &memcg_id, &pgdat, token, workingset); memcg = mem_cgroup_from_id(memcg_id); + if (unlikely(!memcg)) { + pr_warn("DEBUG: memcg is NULL (memcg_id=%d), pgdat=%p, returning false\n",memcg_id, pgdat); + pr_warn("DEBUG: shadow=%p token=%lx workingset=%d\n",shadow, *token, *workingset); + return false; + } *lruvec = mem_cgroup_lruvec(memcg, pgdat); - + pr_warn("DEBUG: memcg=%p, lruvec=%p, continuing normally\n", memcg, *lruvec); max_seq = READ_ONCE((*lruvec)->lrugen.max_seq); max_seq &= EVICTION_MASK >> LRU_REFS_WIDTH;