memcg: avoid accessing memcg after releasing reference
This might cause a use-after-free bug. Signed-off-by: Li Zefan <lizefan@huawei.com> Cc: Glauber Costa <glommer@parallels.com> Acked-by: Michal Hocko <mhocko@suse.cz> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
865ffef379
commit
fd0ccaf2bd
@ -3215,12 +3215,12 @@ void memcg_release_cache(struct kmem_cache *s)
|
|||||||
|
|
||||||
root = s->memcg_params->root_cache;
|
root = s->memcg_params->root_cache;
|
||||||
root->memcg_params->memcg_caches[id] = NULL;
|
root->memcg_params->memcg_caches[id] = NULL;
|
||||||
mem_cgroup_put(memcg);
|
|
||||||
|
|
||||||
mutex_lock(&memcg->slab_caches_mutex);
|
mutex_lock(&memcg->slab_caches_mutex);
|
||||||
list_del(&s->memcg_params->list);
|
list_del(&s->memcg_params->list);
|
||||||
mutex_unlock(&memcg->slab_caches_mutex);
|
mutex_unlock(&memcg->slab_caches_mutex);
|
||||||
|
|
||||||
|
mem_cgroup_put(memcg);
|
||||||
out:
|
out:
|
||||||
kfree(s->memcg_params);
|
kfree(s->memcg_params);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user