From 69827cd1f631a03ac61070950892aa77917925c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Wed, 24 Jun 2015 14:13:00 +0200 Subject: [PATCH] amdgpu: remove pointer arithmetic from command submission MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König Reviewed-by: Alex Deucher Reviewed-by: Marek Olšák --- amdgpu/amdgpu_cs.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c index bf79df35..184f2092 100644 --- a/amdgpu/amdgpu_cs.c +++ b/amdgpu/amdgpu_cs.c @@ -182,12 +182,12 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context, struct amdgpu_cs_request *ibs_request, uint64_t *fence) { - int r = 0; - uint32_t i, size; union drm_amdgpu_cs cs; uint64_t *chunk_array; struct drm_amdgpu_cs_chunk *chunks; struct drm_amdgpu_cs_chunk_data *chunk_data; + uint32_t i, size; + int r = 0; if (ibs_request->ip_type >= AMDGPU_HW_IP_NUM) return -EINVAL; @@ -196,17 +196,11 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context, if (ibs_request->number_of_ibs > AMDGPU_CS_MAX_IBS_PER_SUBMIT) return -EINVAL; - size = (ibs_request->number_of_ibs + 1) * ( - sizeof(uint64_t) + - sizeof(struct drm_amdgpu_cs_chunk) + - sizeof(struct drm_amdgpu_cs_chunk_data)); + size = ibs_request->number_of_ibs + 1; - chunk_array = alloca(size); - if (!chunk_array) - return -ENOMEM; - - chunks = (struct drm_amdgpu_cs_chunk *)(chunk_array + ibs_request->number_of_ibs + 1); - chunk_data = (struct drm_amdgpu_cs_chunk_data *)(chunks + ibs_request->number_of_ibs + 1); + chunk_array = alloca(sizeof(uint64_t) * size); + chunks = alloca(sizeof(struct drm_amdgpu_cs_chunk) * size); + chunk_data = alloca(sizeof(struct drm_amdgpu_cs_chunk_data) * size); memset(&cs, 0, sizeof(cs)); cs.in.chunks = (uint64_t)(uintptr_t)chunk_array;