答复: [PATCH] drm/amdgpu: fix memory leak in wait_all_fence
Wang, Ken
Ken.Wang at amd.com
Fri Apr 7 06:45:32 UTC 2017
Reviewed-by: Ken Wang <Qingqing.Wang at amd.com>
________________________________
发件人: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> 代表 Chunming Zhou <David1.Zhou at amd.com>
发送时间: 2017年4月7日 11:36:18
收件人: amd-gfx at lists.freedesktop.org; Wang, Ken
抄送: Zhou, David(ChunMing)
主题: [PATCH] drm/amdgpu: fix memory leak in wait_all_fence
Change-Id: Ib3e271e00e49f10152c1b3eace981a6bf78820de
Signed-off-by: Chunming Zhou <David1.Zhou at amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index de1c4c3..d842452 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -1216,22 +1216,28 @@ static int amdgpu_cs_wait_all_fences(struct amdgpu_device *adev,
struct drm_amdgpu_fence *fences)
{
uint32_t fence_count = wait->in.fence_count;
+ struct fence **array;
unsigned int i;
long r = 1;
+ array = kcalloc(fence_count, sizeof(struct fence *), GFP_KERNEL);
+
+ if (array == NULL)
+ return -ENOMEM;
for (i = 0; i < fence_count; i++) {
struct fence *fence;
unsigned long timeout = amdgpu_gem_timeout(wait->in.timeout_ns);
fence = amdgpu_cs_get_fence(adev, filp, &fences[i]);
- if (IS_ERR(fence))
- return PTR_ERR(fence);
- else if (!fence)
+ if (IS_ERR(fence)) {
+ r = PTR_ERR(fence);
+ goto err;
+ } else if (!fence)
continue;
-
+ array[i] = fence;
r = kcl_fence_wait_timeout(fence, true, timeout);
if (r < 0)
- return r;
+ goto err;
if (r == 0)
break;
@@ -1240,7 +1246,14 @@ static int amdgpu_cs_wait_all_fences(struct amdgpu_device *adev,
memset(wait, 0, sizeof(*wait));
wait->out.status = (r > 0);
- return 0;
+ r = 0;
+
+err:
+ for (i = 0; i < fence_count; i++)
+ fence_put(array[i]);
+ kfree(array);
+
+ return r;
}
/**
--
1.9.1
_______________________________________________
amd-gfx mailing list
amd-gfx at lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20170407/15936396/attachment.html>
More information about the amd-gfx
mailing list