aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/memcontrol.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 3dd9fe35fe62..7f8219b58e0c 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2946,17 +2946,6 @@ static int memcg_propagate_kmem(struct mem_cgroup *memcg)
2946 return ret; 2946 return ret;
2947} 2947}
2948 2948
2949static int memcg_init_kmem(struct mem_cgroup *memcg)
2950{
2951 int ret;
2952
2953 ret = memcg_propagate_kmem(memcg);
2954 if (ret)
2955 return ret;
2956
2957 return tcp_init_cgroup(memcg);
2958}
2959
2960static void memcg_offline_kmem(struct mem_cgroup *memcg) 2949static void memcg_offline_kmem(struct mem_cgroup *memcg)
2961{ 2950{
2962 struct cgroup_subsys_state *css; 2951 struct cgroup_subsys_state *css;
@@ -3009,7 +2998,6 @@ static void memcg_free_kmem(struct mem_cgroup *memcg)
3009 static_branch_dec(&memcg_kmem_enabled_key); 2998 static_branch_dec(&memcg_kmem_enabled_key);
3010 WARN_ON(page_counter_read(&memcg->kmem)); 2999 WARN_ON(page_counter_read(&memcg->kmem));
3011 } 3000 }
3012 tcp_destroy_cgroup(memcg);
3013} 3001}
3014#else 3002#else
3015static int memcg_update_kmem_limit(struct mem_cgroup *memcg, 3003static int memcg_update_kmem_limit(struct mem_cgroup *memcg,
@@ -3017,16 +3005,9 @@ static int memcg_update_kmem_limit(struct mem_cgroup *memcg,
3017{ 3005{
3018 return -EINVAL; 3006 return -EINVAL;
3019} 3007}
3020static int memcg_init_kmem(struct mem_cgroup *memcg)
3021{
3022 return 0;
3023}
3024static void memcg_offline_kmem(struct mem_cgroup *memcg) 3008static void memcg_offline_kmem(struct mem_cgroup *memcg)
3025{ 3009{
3026} 3010}
3027static void memcg_free_kmem(struct mem_cgroup *memcg)
3028{
3029}
3030#endif /* CONFIG_MEMCG_KMEM */ 3011#endif /* CONFIG_MEMCG_KMEM */
3031 3012
3032/* 3013/*
@@ -4263,9 +4244,14 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
4263 } 4244 }
4264 mutex_unlock(&memcg_create_mutex); 4245 mutex_unlock(&memcg_create_mutex);
4265 4246
4266 ret = memcg_init_kmem(memcg); 4247#ifdef CONFIG_MEMCG_KMEM
4248 ret = memcg_propagate_kmem(memcg);
4267 if (ret) 4249 if (ret)
4268 return ret; 4250 return ret;
4251 ret = tcp_init_cgroup(memcg);
4252 if (ret)
4253 return ret;
4254#endif
4269 4255
4270#ifdef CONFIG_INET 4256#ifdef CONFIG_INET
4271 if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket) 4257 if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket)
@@ -4317,11 +4303,16 @@ static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
4317{ 4303{
4318 struct mem_cgroup *memcg = mem_cgroup_from_css(css); 4304 struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4319 4305
4320 memcg_free_kmem(memcg);
4321#ifdef CONFIG_INET 4306#ifdef CONFIG_INET
4322 if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket) 4307 if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket)
4323 static_branch_dec(&memcg_sockets_enabled_key); 4308 static_branch_dec(&memcg_sockets_enabled_key);
4324#endif 4309#endif
4310
4311#ifdef CONFIG_MEMCG_KMEM
4312 memcg_free_kmem(memcg);
4313 tcp_destroy_cgroup(memcg);
4314#endif
4315
4325 __mem_cgroup_free(memcg); 4316 __mem_cgroup_free(memcg);
4326} 4317}
4327 4318