aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slab_common.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2019-10-28 12:38:26 +0100
committerIngo Molnar <mingo@kernel.org>2019-10-28 12:38:26 +0100
commit65133033ee6ee34724ea3d82d5d1cfc6839ffdae (patch)
tree2fca9fd5630bbfd503a75e3cc69f30056a629c92 /mm/slab_common.c
parentMerge tag 'perf-core-for-mingo-5.5-20191021' of git://git.kernel.org/pub/scm/... (diff)
parentperf/headers: Fix spelling s/EACCESS/EACCES/, s/privilidge/privilege/ (diff)
downloadlinux-65133033ee6ee34724ea3d82d5d1cfc6839ffdae.tar.gz
linux-65133033ee6ee34724ea3d82d5d1cfc6839ffdae.zip
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'mm/slab_common.c')
-rw-r--r--mm/slab_common.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/slab_common.c b/mm/slab_common.c
index c29f03adca91..f9fb27b4c843 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -178,10 +178,13 @@ static int init_memcg_params(struct kmem_cache *s,
static void destroy_memcg_params(struct kmem_cache *s)
{
- if (is_root_cache(s))
+ if (is_root_cache(s)) {
kvfree(rcu_access_pointer(s->memcg_params.memcg_caches));
- else
+ } else {
+ mem_cgroup_put(s->memcg_params.memcg);
+ WRITE_ONCE(s->memcg_params.memcg, NULL);
percpu_ref_exit(&s->memcg_params.refcnt);
+ }
}
static void free_memcg_params(struct rcu_head *rcu)
@@ -253,8 +256,6 @@ static void memcg_unlink_cache(struct kmem_cache *s)
} else {
list_del(&s->memcg_params.children_node);
list_del(&s->memcg_params.kmem_caches_node);
- mem_cgroup_put(s->memcg_params.memcg);
- WRITE_ONCE(s->memcg_params.memcg, NULL);
}
}
#else