diff options
author | Alex Shi <alex.shi@linaro.org> | 2016-06-27 12:18:04 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2016-06-27 12:18:04 +0800 |
commit | fb8ebda5d99fe5f3aa39fd80828a0950d4c6fc47 (patch) | |
tree | 3ef7627bb093145c34b91daa1956557d7a985aac /mm/memcontrol.c | |
parent | 9b0440e3b29f5f5340c247ac9699c53f585fa680 (diff) | |
parent | ffc4aa8f521606f63f59ff708f49780172909e94 (diff) |
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d1f6dc5a715d..08806bb1f070 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3661,6 +3661,7 @@ static void memcg_deactivate_kmem(struct mem_cgroup *memcg) * ordering is imposed by list_lru_node->lock taken by * memcg_drain_all_list_lrus(). */ + rcu_read_lock(); /* can be called from css_free w/o cgroup_mutex */ css_for_each_descendant_pre(css, &memcg->css) { child = mem_cgroup_from_css(css); BUG_ON(child->kmemcg_id != kmemcg_id); @@ -3668,6 +3669,8 @@ static void memcg_deactivate_kmem(struct mem_cgroup *memcg) if (!memcg->use_hierarchy) break; } + rcu_read_unlock(); + memcg_drain_all_list_lrus(kmemcg_id, parent->kmemcg_id); memcg_free_cache_id(kmemcg_id); |