소스 검색

port r11435 from 1.1: make sure we do not overflow

Samuel Thibault 12 년 전
부모
커밋
3830a76d5b
1개의 변경된 파일6개의 추가작업 그리고 2개의 파일을 삭제
  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);
 			if (!last[dst_node])
 				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);
 #else
 			status = cudaMalloc((void **)&addr, size);
@@ -422,7 +424,9 @@ _starpu_malloc_on_node(unsigned dst_node, size_t size)
 				MSG_process_sleep(0.000175);
 				if (!last[dst_node])
 					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);
 #else
                                 int ret;