diff --git a/mm/memcontrol.c b/mm/memcontrol.c index b395871dd23c..aa0ff7d81c70 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -91,6 +91,7 @@ static bool cgroup_memory_nosocket __ro_after_init; static bool cgroup_memory_nokmem __ro_after_init; static struct kmem_cache *memcg_cachep; +static struct kmem_cache *memcg_pn_cachep; #ifdef CONFIG_CGROUP_WRITEBACK static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); @@ -5267,7 +5268,8 @@ static int alloc_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node) { struct mem_cgroup_per_node *pn; - pn = kzalloc_node(sizeof(*pn), GFP_KERNEL, node); + pn = kmem_cache_alloc_node(memcg_pn_cachep, GFP_KERNEL | __GFP_ZERO, + node); if (!pn) return 1; @@ -7369,6 +7371,8 @@ int __init mem_cgroup_init(void) memcg_cachep = kmem_cache_create("mem_cgroup", memcg_size, 0, SLAB_PANIC | SLAB_HWCACHE_ALIGN, NULL); + memcg_pn_cachep = KMEM_CACHE(mem_cgroup_per_node, + SLAB_PANIC | SLAB_HWCACHE_ALIGN); for_each_node(node) { struct mem_cgroup_tree_per_node *rtpn;