From: Andrew Morton Date: Wed, 2 Jun 2021 03:52:14 +0000 (+1000) Subject: mm-memcg-slab-create-a-new-set-of-kmalloc-cg-n-caches-v5-fix X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=16b960136420893482c4e3f5c22a1d28ac789b78;p=users%2Fjedix%2Flinux-maple.git mm-memcg-slab-create-a-new-set-of-kmalloc-cg-n-caches-v5-fix un-fat-finger v5 delta creation Cc: Christoph Lameter Cc: David Rientjes Cc: Johannes Weiner Cc: Joonsoo Kim Cc: Michal Hocko Cc: Pekka Enberg Cc: Roman Gushchin Cc: Shakeel Butt Cc: Stephen Rothwell Cc: Vladimir Davydov Cc: Vlastimil Babka Cc: Waiman Long Signed-off-by: Andrew Morton Signed-off-by: Stephen Rothwell --- diff --git a/mm/internal.h b/mm/internal.h index 2f1182948aa6e..4db89a7838d24 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -115,6 +115,11 @@ extern void putback_lru_page(struct page *page); */ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address); +/* + * in mm/memcontrol.c: + */ +extern bool cgroup_memory_nokmem; + /* * in mm/page_alloc.c */ diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 2508bd97349c1..b913950b9f64c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -83,7 +83,7 @@ DEFINE_PER_CPU(struct mem_cgroup *, int_active_memcg); static bool cgroup_memory_nosocket; /* Kernel memory accounting disabled? */ -static bool cgroup_memory_nokmem; +bool cgroup_memory_nokmem; /* Whether the swap controller is active */ #ifdef CONFIG_MEMCG_SWAP diff --git a/mm/slab_common.c b/mm/slab_common.c index 0ad7d78d0a58e..629b4460de4d2 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -841,10 +841,15 @@ void __init setup_kmalloc_cache_index_table(void) static void __init new_kmalloc_cache(int idx, enum kmalloc_cache_type type, slab_flags_t flags) { - if (type == KMALLOC_RECLAIM) + if (type == KMALLOC_RECLAIM) { flags |= SLAB_RECLAIM_ACCOUNT; - else if (IS_ENABLED(CONFIG_MEMCG_KMEM) && (type == KMALLOC_CGROUP)) + } else if (IS_ENABLED(CONFIG_MEMCG_KMEM) && (type == KMALLOC_CGROUP)) { + if (cgroup_memory_nokmem) { + kmalloc_caches[type][idx] = kmalloc_caches[KMALLOC_NORMAL][idx]; + return; + } flags |= SLAB_ACCOUNT; + } kmalloc_caches[type][idx] = create_kmalloc_cache( kmalloc_info[idx].name[type],