Browse Source

port r11435 from 1.1: make sure we do not overflow

Samuel Thibault 11 years ago
parent
commit
3830a76d5b
1 changed files with 6 additions and 2 deletions
  1. 6 2
      src/datawizard/malloc.c

+ 6 - 2
src/datawizard/malloc.c

@@ -398,7 +398,9 @@ _starpu_malloc_on_node(unsigned dst_node, size_t size)
 			MSG_process_sleep(0.000175);
 			MSG_process_sleep(0.000175);
 			if (!last[dst_node])
 			if (!last[dst_node])
 				last[dst_node] = 1<<10;
 				last[dst_node] = 1<<10;
-			addr = last[dst_node]+=size;
+			addr = last[dst_node];
+			last[dst_node]+=size;
+			STARPU_ASSERT(last[dst_node] >= addr);
 			STARPU_PTHREAD_MUTEX_UNLOCK(&cuda_alloc_mutex);
 			STARPU_PTHREAD_MUTEX_UNLOCK(&cuda_alloc_mutex);
 #else
 #else
 			status = cudaMalloc((void **)&addr, size);
 			status = cudaMalloc((void **)&addr, size);
@@ -422,7 +424,9 @@ _starpu_malloc_on_node(unsigned dst_node, size_t size)
 				MSG_process_sleep(0.000175);
 				MSG_process_sleep(0.000175);
 				if (!last[dst_node])
 				if (!last[dst_node])
 					last[dst_node] = 1<<10;
 					last[dst_node] = 1<<10;
-				addr = last[dst_node]+=size;
+				addr = last[dst_node];
+				last[dst_node]+=size;
+				STARPU_ASSERT(last[dst_node] >= addr);
 				STARPU_PTHREAD_MUTEX_UNLOCK(&opencl_alloc_mutex);
 				STARPU_PTHREAD_MUTEX_UNLOCK(&opencl_alloc_mutex);
 #else
 #else
                                 int ret;
                                 int ret;