diff options
author | Alex Waterman <alexw@nvidia.com> | 2013-09-27 10:02:25 -0700 |
---|---|---|
committer | Ajay Nandakumar <anandakumarm@nvidia.com> | 2013-10-03 19:17:39 +0530 |
commit | ea03b52bb93cab5d9ee953543c07c25b985c9d9c (patch) | |
tree | b042a41e49809d33b9f00371c82a4ec9c98bd7c8 /drivers/video/tegra/dc/ext | |
parent | 0581320e1bf76f31b95f4178a4994fcf11e09765 (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.c | 1 | ||||
-rw-r--r-- | drivers/video/tegra/dc/ext/dev.c | 2 |
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]); } |