[PATCH] libnuma_node_not_sequential libnuma.so function numa_node_of_cpu() doesn't use previously created list of valid nodes but use the entire array indexed with the maximum number of nodes available on the system. Fix is to check node is valid before calling numa_node_to_cpus_v2_int() which check that the cpu belongs to that node. .

Thierry FAUCK - IBM LTC <[email protected]> Tue, 9 Dec 2014 16:56:07 +0100
Newsgroups org.kernel.vger.linux-numa
Message-ID <[email protected]>
From: Thierry Fauck <[email protected]>

Signed-off-by: Thierry Fauck <[email protected]>

	modified:   libnuma.c
---
 libnuma.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libnuma.c b/libnuma.c
index 91425ae..5961df5 100644
--- a/libnuma.c
+++ b/libnuma.c
@@ -1405,10 +1405,12 @@ int numa_node_of_cpu(int cpu)
 	bmp = numa_bitmask_alloc(ncpus);
 	nnodes = numa_max_node();
 	for (node = 0; node <= nnodes; node++){
-		numa_node_to_cpus_v2_int(node, bmp);
-		if (numa_bitmask_isbitset(bmp, cpu)){
-			ret = node;
-			goto end;
+		if (_getbit(numa_nodes_ptr,node)) {
+			numa_node_to_cpus_v2_int(node, bmp);
+			if (numa_bitmask_isbitset(bmp, cpu)){
+				ret = node;
+				goto end;
+			}
 		}
 	}
 	ret = -1;
-- 
2.1.0