All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu: fix memory leak in wait_all_fence
@ 2017-04-07  3:36 Chunming Zhou
       [not found] ` <1491536178-5978-1-git-send-email-David1.Zhou-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Chunming Zhou @ 2017-04-07  3:36 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Ken.Wang-5C7GfCeVMHo
  Cc: Chunming Zhou

Change-Id: Ib3e271e00e49f10152c1b3eace981a6bf78820de
Signed-off-by: Chunming Zhou <David1.Zhou@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-07  9:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-07  3:36 [PATCH] drm/amdgpu: fix memory leak in wait_all_fence Chunming Zhou
     [not found] ` <1491536178-5978-1-git-send-email-David1.Zhou-5C7GfCeVMHo@public.gmane.org>
2017-04-07  6:45   ` 答复: " Wang, Ken
2017-04-07  8:36   ` Christian König
     [not found]     ` <058491a9-73a6-eddf-73fb-aaac066f9b3e-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-04-07  8:46       ` zhoucm1
     [not found]         ` <58E751D5.50707-5C7GfCeVMHo@public.gmane.org>
2017-04-07  8:55           ` Christian König
     [not found]             ` <6aa1afcf-b2d3-ea84-b08c-3520fffb0b7c-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-04-07  9:03               ` zhoucm1

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.