Otherwise the calling function won't notice that something is wrong. Signed-off-by: Christian König <christian.koenig at amd.com> --- tests/amdgpu/amdgpu_test.h | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/amdgpu/amdgpu_test.h b/tests/amdgpu/amdgpu_test.h index f2ece3c3..d1e14e23 100644 --- a/tests/amdgpu/amdgpu_test.h +++ b/tests/amdgpu/amdgpu_test.h @@ -219,17 +219,31 @@ static inline amdgpu_bo_handle gpu_mem_alloc( r = amdgpu_bo_alloc(device_handle, &req, &buf_handle); CU_ASSERT_EQUAL(r, 0); + if (r) + return NULL; r = amdgpu_va_range_alloc(device_handle, amdgpu_gpu_va_range_general, size, alignment, 0, vmc_addr, va_handle, 0); CU_ASSERT_EQUAL(r, 0); + if (r) + goto error_free_bo; r = amdgpu_bo_va_op(buf_handle, 0, size, *vmc_addr, 0, AMDGPU_VA_OP_MAP); CU_ASSERT_EQUAL(r, 0); return buf_handle; + +error_free_va: + r = amdgpu_va_range_free(*va_handle); + CU_ASSERT_EQUAL(r, 0); + +error_free_bo: + r = amdgpu_bo_free(buf_handle); + CU_ASSERT_EQUAL(r, 0); + + return NULL; } static inline int gpu_mem_free(amdgpu_bo_handle bo, @@ -239,16 +253,23 @@ static inline int gpu_mem_free(amdgpu_bo_handle bo, { int r; + if (!bo) + return 0; + r = amdgpu_bo_va_op(bo, 0, size, vmc_addr, 0, AMDGPU_VA_OP_UNMAP); CU_ASSERT_EQUAL(r, 0); + if (r) + return r; r = amdgpu_va_range_free(va_handle); CU_ASSERT_EQUAL(r, 0); + if (r) + return r; r = amdgpu_bo_free(bo); CU_ASSERT_EQUAL(r, 0); - return 0; + return r; } static inline int -- 2.14.1