diff options
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index fc10620967c7..5c714f33f494 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3522,16 +3522,17 @@ static void __mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg, swap_buffers: /* Swap primary and spare array */ thresholds->spare = thresholds->primary; - /* If all events are unregistered, free the spare array */ - if (!new) { - kfree(thresholds->spare); - thresholds->spare = NULL; - } rcu_assign_pointer(thresholds->primary, new); /* To be sure that nobody uses thresholds */ synchronize_rcu(); + + /* If all events are unregistered, free the spare array */ + if (!new) { + kfree(thresholds->spare); + thresholds->spare = NULL; + } unlock: mutex_unlock(&memcg->thresholds_lock); } @@ -4878,6 +4879,11 @@ static int mem_cgroup_can_attach(struct cgroup_taskset *tset) return ret; } +static int mem_cgroup_allow_attach(struct cgroup_taskset *tset) +{ + return subsys_cgroup_allow_attach(tset); +} + static void mem_cgroup_cancel_attach(struct cgroup_taskset *tset) { if (mc.to) @@ -5039,6 +5045,10 @@ static int mem_cgroup_can_attach(struct cgroup_taskset *tset) { return 0; } +static int mem_cgroup_allow_attach(struct cgroup_taskset *tset) +{ + return 0; +} static void mem_cgroup_cancel_attach(struct cgroup_taskset *tset) { } @@ -5222,6 +5232,7 @@ struct cgroup_subsys memory_cgrp_subsys = { .can_attach = mem_cgroup_can_attach, .cancel_attach = mem_cgroup_cancel_attach, .attach = mem_cgroup_move_task, + .allow_attach = mem_cgroup_allow_attach, .bind = mem_cgroup_bind, .dfl_cftypes = memory_files, .legacy_cftypes = mem_cgroup_legacy_files, |