diff options
author | David Rientjes <rientjes@google.com> | 2011-02-25 10:06:39 +0100 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2011-02-25 10:10:54 +0100 |
commit | 1f565a896ee139a70e1a16f74a4ec29707691b0b (patch) | |
tree | 90b577a121a0dcb7a7034e4cdac125db1a29ad8d /arch/x86/mm/numa_64.c | |
parent | x86: Rename e820_table_* to pgt_buf_* (diff) | |
download | linux-1f565a896ee139a70e1a16f74a4ec29707691b0b.tar.xz linux-1f565a896ee139a70e1a16f74a4ec29707691b0b.zip |
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>
Diffstat (limited to 'arch/x86/mm/numa_64.c')
-rw-r--r-- | arch/x86/mm/numa_64.c | 3 |
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) 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); |