summaryrefslogtreecommitdiff
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
authorAmit Pundir <amit.pundir@linaro.org>2016-02-18 00:20:12 +0530
committerAmit Pundir <amit.pundir@linaro.org>2016-02-18 00:20:12 +0530
commit02bbd06e489a9f56910973535152d3ec47f3fdcc (patch)
tree93a9a4d687da4d423c92cc4a82001f3792c0b259 /mm/memcontrol.c
parent34f6d2c9d12a97271d55c7b204443b2da9e6c29e (diff)
parent3d0f8b944b0ab4ec79d8d0b93d8038971095337a (diff)
Merge branch 'android-4.4' of https://android.googlesource.com/kernel/common
* android-4.4: (475 commits) android: base-cfg: Add CONFIG_IP_MULTICAST android: recommended.cfg: enable taskstats ANDROID: android: base-cfg: disable CONFIG_SYSVIPC android: configs: base: enable configfs gadget functions android: add CONFIG_DEBUG_RODATA to recommended config android: configs: remove CONFIG_BATTERY_ANDROID=y android: configs: base: enable IPV6 android: configs: Enable SELinux and its dependencies. android: base-cfg: disable ALARM_DEV android: base-cfg: turn off /dev/mem and /dev/kmem android: base-cfg: enable ARMV8_DEPRECATED and subfeatures android: base-cfg: enforce the needed XFRM_MODE_TUNNEL (for VPN) android: base-cfg: disable LOGGER android: base-cfg: enable DM_VERITY (used for secureboot) android: configs: add systrace support to recommended configs android: configs: update 3.10 options android: configs: Add CONFIG_NETFILTER_XT_TARGET_IDLETIMER android: configs: add IPV6 ROUTE INFO android: configs: add TIMER_STATS back, helps with sysrq t. android: configs: Add HIDRAW to recommended set ...
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r--mm/memcontrol.c21
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,