x86-64, NUMA: Fix size of numa_distance array
authorDavid Rientjes <rientjes@google.com>
Fri, 25 Feb 2011 09:06:39 +0000 (10:06 +0100)
committerTejun Heo <tj@kernel.org>
Fri, 25 Feb 2011 09:10:54 +0000 (10:10 +0100)
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>
arch/x86/mm/numa_64.c

index cccc01d8415c1db08d45481a3eb2da13a04b464d..7757d2214fab5a36124f70f686aa31e105586604 100644 (file)
@@ -414,7 +414,8 @@ static int __init numa_alloc_distance(void)
 
        for_each_node_mask(i, nodes_parsed)
                cnt = i;
-       size = ++cnt * sizeof(numa_distance[0]);
+       cnt++;
+       size = cnt * cnt * sizeof(numa_distance[0]);
 
        phys = memblock_find_in_range(0, (u64)max_pfn_mapped << PAGE_SHIFT,
                                      size, PAGE_SIZE);