On Fri 31-01-20 18:00:51, Kirill Tkhai wrote: [...] > @@ -333,8 +333,9 @@ static int memcg_expand_one_shrinker_map(struct mem_cgroup *memcg, > /* Not yet online memcg */ > if (!old) > return 0; > - > - new = kvmalloc(sizeof(*new) + size, GFP_KERNEL); > + /* See comment in alloc_mem_cgroup_per_node_info()*/ > + tmp = node_state(nid, N_NORMAL_MEMORY) ? nid : NUMA_NO_NODE; > + new = kvmalloc_node(sizeof(*new) + size, GFP_KERNEL, tmp); > if (!new) > return -ENOMEM; I do not think this is a good pattern to copy. Why cannot you simply use kvmalloc_node with the given node? The allocator should fallback to the closest node if the given one doesn't have any memory. -- Michal Hocko SUSE Labs