On Tue 04-01-22 13:22:25, Yu Zhao wrote: > +static struct lru_gen_mm_walk *alloc_mm_walk(void) > +{ > + if (!current->reclaim_state || !current->reclaim_state->mm_walk) > + return kvzalloc(sizeof(struct lru_gen_mm_walk), GFP_KERNEL); > + > + return current->reclaim_state->mm_walk; > +} > + > +static void free_mm_walk(struct lru_gen_mm_walk *walk) > +{ > + if (!current->reclaim_state || !current->reclaim_state->mm_walk) > + kvfree(walk); > +} Do I get it right that you are allocating from the reclaim context? What prevents this to completely deplete the memory as the reclaim context is PF_MEMALLOC? -- Michal Hocko SUSE Labs