aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2011-02-25 04:06:39 -0500
committerTejun Heo <tj@kernel.org>2011-02-25 04:10:54 -0500
commit1f565a896ee139a70e1a16f74a4ec29707691b0b (patch)
tree90b577a121a0dcb7a7034e4cdac125db1a29ad8d
parentd1b19426b04787e48f2689923e28d37b488969b0 (diff)
x86-64, NUMA: Fix size of numa_distance array
numa_distance should be sized like the SLIT, an NxN matrix where N is the highest node id + 1. This patch fixes the calculation to avoid overflowing the array on the subsequent iteration. -tj: The original patch used last index to calculate size. Yinghai pointed out it should be incremented so it is the number of elements instead of the last index to calculate the size of the table. Updated accordingly. Signed-off-by: David Rientjes <rientjes@google.com> Cc: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r--arch/x86/mm/numa_64.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c
index cccc01d8415c..7757d2214fab 100644
--- a/arch/x86/mm/numa_64.c
+++ b/arch/x86/mm/numa_64.c
@@ -414,7 +414,8 @@ static int __init numa_alloc_distance(void)
414 414
415 for_each_node_mask(i, nodes_parsed) 415 for_each_node_mask(i, nodes_parsed)
416 cnt = i; 416 cnt = i;
417 size = ++cnt * sizeof(numa_distance[0]); 417 cnt++;
418 size = cnt * cnt * sizeof(numa_distance[0]);
418 419
419 phys = memblock_find_in_range(0, (u64)max_pfn_mapped << PAGE_SHIFT, 420 phys = memblock_find_in_range(0, (u64)max_pfn_mapped << PAGE_SHIFT,
420 size, PAGE_SIZE); 421 size, PAGE_SIZE);