Prechádzať zdrojové kódy

Fix coverity warnings

Samuel Thibault 8 rokov pred
rodič
commit
2e241ba8bd
1 zmenil súbory, kde vykonal 11 pridanie a 23 odobranie
  1. 11 23
      src/core/topology.c

+ 11 - 23
src/core/topology.c

@@ -2045,20 +2045,14 @@ static void _starpu_init_numa_node(struct _starpu_machine_config *config)
 		{
 			hwloc_obj_t obj = hwloc_cuda_get_device_osdev_by_index(config->topology.hwtopology, i);
 
+			/* If we don't find a "node" obj before the root, this means
+			 * hwloc does not know whether there are numa nodes or not, so
+			 * we should not use a per-node sampling in that case. */
+			while (!obj && obj->type != HWLOC_OBJ_NODE)
+				obj = obj->parent;
 			/* Hwloc cannot recognize some devices */
 			if (!obj)
 				continue;
-
-			while (obj->type != HWLOC_OBJ_NODE)
-			{
-				obj = obj->parent;
-
-				/* If we don't find a "node" obj before the root, this means
-				 * hwloc does not know whether there are numa nodes or not, so
-				 * we should not use a per-node sampling in that case. */
-				if (!obj)
-					continue;
-			}
 			int numa_starpu_id = starpu_memory_nodes_numa_hwloclogid_to_id(obj->logical_index);
 
 			/* This shouldn't happen */
@@ -2114,20 +2108,14 @@ static void _starpu_init_numa_node(struct _starpu_machine_config *config)
 				{
 					hwloc_obj_t obj = hwloc_opencl_get_device_osdev_by_index(config->topology.hwtopology, platform, i);
 
+					/* If we don't find a "node" obj before the root, this means
+					 * hwloc does not know whether there are numa nodes or not, so
+					 * we should not use a per-node sampling in that case. */
+					while (obj && obj->type != HWLOC_OBJ_NODE)
+						obj = obj->parent;
 					/* Hwloc cannot recognize some devices */
 					if (!obj)
 						continue;
-
-					while (obj->type != HWLOC_OBJ_NODE)
-					{
-						obj = obj->parent;
-
-						/* If we don't find a "node" obj before the root, this means
-						 * hwloc does not know whether there are numa nodes or not, so
-						 * we should not use a per-node sampling in that case. */
-						if (!obj)
-							continue;
-					}
 					int numa_starpu_id = starpu_memory_nodes_numa_hwloclogid_to_id(obj->logical_index);
 
 					/* This shouldn't happen */
@@ -2296,7 +2284,7 @@ _starpu_init_workers_binding_and_memory (struct _starpu_machine_config *config,
 			{
 				int numa_logical_id = _starpu_get_logical_numa_node_worker(worker);
 				int numa_starpu_id =  starpu_memory_nodes_numa_hwloclogid_to_id(numa_logical_id);
-				if (numa_starpu_id >= STARPU_MAXNUMANODES)
+				if (numa_starpu_id < 0 || numa_starpu_id >= STARPU_MAXNUMANODES)
 					numa_starpu_id = STARPU_MAIN_RAM;
 
 				workerarg->numa_memory_node = memory_node = numa_starpu_id;