[PATCH] TILER: Corrrect PAT array allocation error handling
Sin, David
davidsin at ti.com
Wed Jul 14 16:01:06 UTC 2010
Bryan,
Can you please review this patch? This patch fixes resource leaks if dma_alloc_coherent fails during TILER init.
Thanks for your input.
-David
>From ba6db483a22314f1e5fd7227158213ca9eaa94e9 Mon Sep 17 00:00:00 2001
From: David Sin <davidsin at ti.com>
Date: Wed, 14 Jul 2010 10:47:07 -0500
Subject: [PATCH] TILER: Corrrect PAT array allocation error handling
Signed-off-by: Bryan Wu <bryan.wu at canonical.com>
Signed-off-by: David Sin <davidsin at ti.com>
---
drivers/media/video/tiler/tiler.c | 20 +++++++++++---------
1 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/media/video/tiler/tiler.c b/drivers/media/video/tiler/tiler.c
index 3b6cef3..2b8292d 100644
--- a/drivers/media/video/tiler/tiler.c
+++ b/drivers/media/video/tiler/tiler.c
@@ -1486,6 +1486,15 @@ static s32 __init tiler_init(void)
struct tcm *sita = NULL;
struct tmm *tmm_pat = NULL;
+ /**
+ * Array of physical pages for PAT programming, which must be a 16-byte
+ * aligned physical address
+ */
+ dmac_va = dma_alloc_coherent(NULL, TILER_WIDTH * TILER_HEIGHT *
+ sizeof(*dmac_va), &dmac_pa, GFP_ATOMIC);
+ if (!dmac_va)
+ return -ENOMEM;
+
/* Allocate tiler container manager (we share 1 on OMAP4) */
div_pt.x = TILER_WIDTH; /* hardcoded default */
div_pt.y = (3 * TILER_HEIGHT) / 4;
@@ -1503,15 +1512,6 @@ static s32 __init tiler_init(void)
TMM_SET(TILFMT_32BIT, tmm_pat);
TMM_SET(TILFMT_PAGE, tmm_pat);
- /**
- * Array of physical pages for PAT programming, which must be a 16-byte
- * aligned physical address
- */
- dmac_va = dma_alloc_coherent(NULL, TILER_WIDTH * TILER_HEIGHT *
- sizeof(*dmac_va), &dmac_pa, GFP_ATOMIC);
- if (!dmac_va)
- return -ENOMEM;
-
tiler_device = kmalloc(sizeof(*tiler_device), GFP_KERNEL);
if (!tiler_device || !sita || !tmm_pat) {
r = -ENOMEM;
@@ -1561,6 +1561,8 @@ error:
kfree(tiler_device);
tcm_deinit(sita);
tmm_deinit(tmm_pat);
+ dma_free_coherent(NULL, TILER_WIDTH * TILER_HEIGHT *
+ sizeof(*dmac_va), dmac_va, dmac_pa);
}
return r;
--
1.6.3.3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-TILER-Corrrect-PAT-array-allocation-error-handling.patch
Type: application/octet-stream
Size: 1896 bytes
Desc: 0001-TILER-Corrrect-PAT-array-allocation-error-handling.patch
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20100714/5497f391/attachment.obj>
More information about the kernel-team
mailing list