aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/memcontrol.c28
1 files changed, 0 insertions, 28 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index bb8c237026cc..d9fab72da52e 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2905,34 +2905,6 @@ __memcg_kmem_newpage_charge(gfp_t gfp, struct mem_cgroup **_memcg, int order)
2905 2905
2906 *_memcg = NULL; 2906 *_memcg = NULL;
2907 2907
2908 /*
2909 * Disabling accounting is only relevant for some specific memcg
2910 * internal allocations. Therefore we would initially not have such
2911 * check here, since direct calls to the page allocator that are
2912 * accounted to kmemcg (alloc_kmem_pages and friends) only happen
2913 * outside memcg core. We are mostly concerned with cache allocations,
2914 * and by having this test at memcg_kmem_get_cache, we are already able
2915 * to relay the allocation to the root cache and bypass the memcg cache
2916 * altogether.
2917 *
2918 * There is one exception, though: the SLUB allocator does not create
2919 * large order caches, but rather service large kmallocs directly from
2920 * the page allocator. Therefore, the following sequence when backed by
2921 * the SLUB allocator:
2922 *
2923 * memcg_stop_kmem_account();
2924 * kmalloc(<large_number>)
2925 * memcg_resume_kmem_account();
2926 *
2927 * would effectively ignore the fact that we should skip accounting,
2928 * since it will drive us directly to this function without passing
2929 * through the cache selector memcg_kmem_get_cache. Such large
2930 * allocations are extremely rare but can happen, for instance, for the
2931 * cache arrays. We bring this test here.
2932 */
2933 if (current->memcg_kmem_skip_account)
2934 return true;
2935
2936 memcg = get_mem_cgroup_from_mm(current->mm); 2908 memcg = get_mem_cgroup_from_mm(current->mm);
2937 2909
2938 if (!memcg_kmem_is_active(memcg)) { 2910 if (!memcg_kmem_is_active(memcg)) {