diff --git a/mm/workingset.c b/mm/workingset.c index e9f05634747a..8166793b38dc 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -272,6 +272,8 @@ 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)) + WRITE_ONCE(memcg, root_mem_cgroup); *lruvec = mem_cgroup_lruvec(memcg, pgdat); max_seq = READ_ONCE((*lruvec)->lrugen.max_seq);