diff mbox

[2/2] gpu: ion: Fix a memory leak

Message ID CAD0L9vZCmcYRnLqwq4aRfDWpbYZuJ3dmv3f5_poRDXQMPvd9GQ@mail.gmail.com
State New
Headers show

Commit Message

Nishanth Peethambaran Sept. 4, 2012, 9:42 p.m. UTC
From 03184abb0efd05a422c4525f2f4398f127a9a0c9 Mon Sep 17 00:00:00 2001
From: Nishanth Peethambaran <nishanth@broadcom.com>
Date: Wed, 5 Sep 2012 02:49:30 +0530
Subject: [PATCH 2/2] gpu: ion: Fix a memory leak

The dirty bitmap buffer for cached buffers is freed
when buffer gets destroyed.

Change-Id: If2b6a6e3ffc5ed57623cfcbc01cb6b720bee532f
Signed-off-by: Nishanth Peethambaran <nishanth@broadcom.com>
---
 drivers/gpu/ion/ion.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

 	buffer->dev = dev;
@@ -210,6 +212,8 @@ static void ion_buffer_destroy(struct kref *kref)
 	if (WARN_ON(buffer->kmap_cnt > 0))
 		buffer->heap->ops->unmap_kernel(buffer->heap, buffer);

+	if (buffer->flags & ION_FLAG_CACHED)
+		kfree(buffer->dirty);
 	buffer->heap->ops->unmap_dma(buffer->heap, buffer);
 	buffer->heap->ops->free(buffer);
 	mutex_lock(&dev->lock);
diff mbox

Patch

diff --git a/drivers/gpu/ion/ion.c b/drivers/gpu/ion/ion.c
index 207d00f..3ad766a 100644
--- a/drivers/gpu/ion/ion.c
+++ b/drivers/gpu/ion/ion.c
@@ -176,12 +176,14 @@  static struct ion_buffer
*ion_buffer_create(struct ion_heap *heap,
 			return ERR_PTR(-EINVAL);
 		}

-	ret = ion_buffer_alloc_dirty(buffer);
-	if (ret) {
-		heap->ops->unmap_dma(heap, buffer);
-		heap->ops->free(buffer);
-		kfree(buffer);
-		return ERR_PTR(ret);
+	if (buffer->flags & ION_FLAG_CACHED) {
+		ret = ion_buffer_alloc_dirty(buffer);
+		if (ret) {
+			heap->ops->unmap_dma(heap, buffer);
+			heap->ops->free(buffer);
+			kfree(buffer);
+			return ERR_PTR(ret);
+		}
 	}