I think this was introduced unintentionally when cpuset hotplug was made asynchronous. Fortunately it does no harm, as updating tasks' cpumask will just return failure and there's a guarantee_online_mems() when updating nodemask, and then the tasks will be moved to an ancestor cpuset. Signed-off-by: Li Zefan <lizefan@xxxxxxxxxx> --- kernel/cpuset.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 8b0e433..2e4c5af 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c @@ -2013,7 +2013,9 @@ static void cpuset_propagate_hotplug_workfn(struct work_struct *work) mutex_lock(&callback_mutex); cpumask_andnot(cs->cpus_allowed, cs->cpus_allowed, &off_cpus); mutex_unlock(&callback_mutex); - update_tasks_cpumask(cs, NULL); + + if (!cpumask_empty(cs->cpus_allowed)) + update_tasks_cpumask(cs, NULL); } /* remove offline mems from @cs */ @@ -2022,7 +2024,9 @@ static void cpuset_propagate_hotplug_workfn(struct work_struct *work) mutex_lock(&callback_mutex); nodes_andnot(cs->mems_allowed, cs->mems_allowed, off_mems); mutex_unlock(&callback_mutex); - update_tasks_nodemask(cs, &tmp_mems, NULL); + + if (!nodes_empty(cs->mems_allowed)) + update_tasks_nodemask(cs, &tmp_mems, NULL); } is_empty = cpumask_empty(cs->cpus_allowed) || -- 1.8.0.2 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers