summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/ext
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2013-09-27 10:02:25 -0700
committerAjay Nandakumar <anandakumarm@nvidia.com>2013-10-03 19:17:39 +0530
commitea03b52bb93cab5d9ee953543c07c25b985c9d9c (patch)
treeb042a41e49809d33b9f00371c82a4ec9c98bd7c8 /drivers/video/tegra/dc/ext
parent0581320e1bf76f31b95f4178a4994fcf11e09765 (diff)
video: tegra: dc: detach from dmabuf
Make sure we detach from the dmabuf before we put the dmabuf. Otherwise we leak the underlying attachment structure. Bug 1354774 Change-Id: Ic36221813e3ece41f189ef6083ed52dd71bbe90f Signed-off-by: Alex Waterman <alexw@nvidia.com> Reviewed-on: http://git-master/r/279875 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Seema Khowala <seemaj@nvidia.com> Tested-by: Seema Khowala <seemaj@nvidia.com> Reviewed-by: Chao Xu <cxu@nvidia.com> Reviewed-by: Mitch Luban <mluban@nvidia.com> (cherry picked from commit 9d23e72cc69da6e702a3bb7788db67febac292eb) Signed-off-by: Ajay Nandakumar <anandakumarm@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/dc/ext')
-rw-r--r--drivers/video/tegra/dc/ext/cursor.c1
-rw-r--r--drivers/video/tegra/dc/ext/dev.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/drivers/video/tegra/dc/ext/cursor.c b/drivers/video/tegra/dc/ext/cursor.c
index 8b876a0dac27..4d4b7470c7f4 100644
--- a/drivers/video/tegra/dc/ext/cursor.c
+++ b/drivers/video/tegra/dc/ext/cursor.c
@@ -301,6 +301,7 @@ int tegra_dc_ext_set_cursor_image(struct tegra_dc_ext_user *user,
if (old_handle) {
dma_buf_unmap_attachment(old_handle->attach,
old_handle->sgt, DMA_TO_DEVICE);
+ dma_buf_detach(old_handle->buf, old_handle->attach);
dma_buf_put(old_handle->buf);
kfree(old_handle);
}
diff --git a/drivers/video/tegra/dc/ext/dev.c b/drivers/video/tegra/dc/ext/dev.c
index c25eac24acaf..c7fc04fa9059 100644
--- a/drivers/video/tegra/dc/ext/dev.c
+++ b/drivers/video/tegra/dc/ext/dev.c
@@ -502,6 +502,8 @@ static void tegra_dc_ext_flip_worker(struct work_struct *work)
for (i = 0; i < nr_unpin; i++) {
dma_buf_unmap_attachment(unpin_handles[i]->attach,
unpin_handles[i]->sgt, DMA_TO_DEVICE);
+ dma_buf_detach(unpin_handles[i]->buf,
+ unpin_handles[i]->attach);
dma_buf_put(unpin_handles[i]->buf);
kfree(unpin_handles[i]);
}