summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2012-06-12 16:52:54 +0900
committerInki Dae <inki.dae@samsung.com>2012-07-27 11:13:56 +0900
commitc374e7319249d61230dbbb190d05ce42898f4361 (patch)
treea146339f6f105a6f5561f69087071603a6421fc3 /drivers/gpu/drm/exynos
parent47fcdce2d5295244066cd232109868aca42b50a1 (diff)
downloadlinux-c374e7319249d61230dbbb190d05ce42898f4361.tar.gz
linux-c374e7319249d61230dbbb190d05ce42898f4361.tar.bz2
linux-c374e7319249d61230dbbb190d05ce42898f4361.zip
drm/exynos: do not release memory region from exporter.
the region should be released by exporter once dmabuf's refcount becomes 0. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_gem.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 47696bb1284e..a9bf526c1704 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -283,11 +283,21 @@ void exynos_drm_gem_destroy(struct exynos_drm_gem_obj *exynos_gem_obj)
if (!buf->pages)
return;
+ /*
+ * do not release memory region from exporter.
+ *
+ * the region will be released by exporter
+ * once dmabuf's refcount becomes 0.
+ */
+ if (obj->import_attach)
+ goto out;
+
if (exynos_gem_obj->flags & EXYNOS_BO_NONCONTIG)
exynos_drm_gem_put_pages(obj);
else
exynos_drm_free_buf(obj->dev, exynos_gem_obj->flags, buf);
+out:
exynos_drm_fini_buf(obj->dev, buf);
exynos_gem_obj->buffer = NULL;