* [PATCH 4.3 156/200] sched: Fix crash in sched_init_numa()
[not found] <20160214222217.084543173@linuxfoundation.org>
@ 2016-02-14 22:22 ` Greg Kroah-Hartman
0 siblings, 0 replies; only message in thread
From: Greg Kroah-Hartman @ 2016-02-14 22:22 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Jan Stancek, Raghavendra K T, gkurz,
grant.likely, nikunj, vdavydov, linuxppc-dev, linux-mm, peterz,
benh, paulus, mpe, anton, Ingo Molnar
4.3-stable review patch. If anyone has any objections, please let me know.
------------------
From: Raghavendra K T <raghavendra.kt@linux•vnet.ibm.com>
commit 9c03ee147193645be4c186d3688232fa438c57c7 upstream.
The following PowerPC commit:
c118baf80256 ("arch/powerpc/mm/numa.c: do not allocate bootmem memory for non existing nodes")
avoids allocating bootmem memory for non existent nodes.
But when DEBUG_PER_CPU_MAPS=y is enabled, my powerNV system failed to boot
because in sched_init_numa(), cpumask_or() operation was done on
unallocated nodes.
Fix that by making cpumask_or() operation only on existing nodes.
[ Tested with and w/o DEBUG_PER_CPU_MAPS=y on x86 and PowerPC. ]
Reported-by: Jan Stancek <jstancek@redhat•com>
Tested-by: Jan Stancek <jstancek@redhat•com>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux•vnet.ibm.com>
Cc: <gkurz@linux•vnet.ibm.com>
Cc: <grant.likely@linaro•org>
Cc: <nikunj@linux•vnet.ibm.com>
Cc: <vdavydov@parallels•com>
Cc: <linuxppc-dev@lists•ozlabs.org>
Cc: <linux-mm@kvack•org>
Cc: <peterz@infradead•org>
Cc: <benh@kernel•crashing.org>
Cc: <paulus@samba•org>
Cc: <mpe@ellerman•id.au>
Cc: <anton@samba•org>
Link: http://lkml.kernel.org/r/1452884483-11676-1-git-send-email-raghavendra.kt@linux.vnet.ibm.com
Signed-off-by: Ingo Molnar <mingo@kernel•org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation•org>
---
kernel/sched/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6678,7 +6678,7 @@ static void sched_init_numa(void)
sched_domains_numa_masks[i][j] = mask;
- for (k = 0; k < nr_node_ids; k++) {
+ for_each_node(k) {
if (node_distance(j, k) > sched_domains_numa_distance[i])
continue;
^ permalink raw reply [flat|nested] only message in thread