Patch "sched/core: Clear the root_domain cpumasks in init_rootdomain()" has been added to the 3.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
sched/core: Clear the root_domain cpumasks in init_rootdomain()
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sched-core-clear-the-root_domain-cpumasks-in-init_rootdomain.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
8295c69925ad53ec32ca54ac9fc194ff21bc40e2Mon Sep 17 00:00:00 2001
From: Xunlei Pang <[email protected]>
Date: Wed, 2 Dec 2015 19:52:59 +0800
Subject: sched/core: Clear the root_domain cpumasks in init_rootdomain()
From: Xunlei Pang <[email protected]>
commit 8295c69925ad53ec32ca54ac9fc194ff21bc40e2 upstream.
root_domain::rto_mask allocated through alloc_cpumask_var() contains garbage data, this may cause problems. For instance, When doing pull_rt_task(), it may do useless iterations if rto_mask retains some extra garbage bits. Worse still, this violates the isolated domain rule for clustered scheduling using cpuset, because the tasks(with all the cpus allowed) belongs to one root domain can be pulled away into another root domain.
The patch cleans the garbage by using zalloc_cpumask_var() instead of alloc_cpumask_var() for root_domain::rto_mask allocation, thereby addressing the issues.
Do the same thing for root_domain's other cpumask memembers:dlo_mask, span, and online.
--- kernel/sched/core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
kernel/sched/core.c +4 -4
@@ -5420,13 +5420,13 @@ static int init_rootdomain(struct root_d {memset (rd,0 ,sizeof (*rd)); -if (!alloc_cpumask_var (&rd->span,GFP_KERNEL )) +if (!zalloc_cpumask_var (&rd->span,GFP_KERNEL )) goto out; -if (!alloc_cpumask_var (&rd->online,GFP_KERNEL )) +if (!zalloc_cpumask_var (&rd->online,GFP_KERNEL )) goto free_span; -if (!alloc_cpumask_var (&rd->dlo_mask,GFP_KERNEL )) +if (!zalloc_cpumask_var (&rd->dlo_mask,GFP_KERNEL )) goto free_online; -if (!alloc_cpumask_var (&rd->rto_mask,GFP_KERNEL )) +if (!zalloc_cpumask_var (&rd->rto_mask,GFP_KERNEL )) goto free_dlo_mask;init_dl_bw (&rd->dl_bw);
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/sched-core-clear-the-root_domain-cpumasks-in-init_rootdomain.patch