Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c93537a authored by Joonyoung Shim's avatar Joonyoung Shim Committed by Inki Dae
Browse files

drm/exynos: fix missed calling of drm_prime_gem_destroy()



When obj->import_attach is existed, code calling drm_prime_gem_destroy()
was removed from commit 67e93c80 ("drm/exynos: stop copying sg
table"), and it's a fault.

The drm_prime_gem_destroy() is cleanup function which GEM drivers need
to call when they use drm_gem_prime_import() to import dma-bufs, so
exynos-drm driver using drm_gem_prime_import() needs calling
drm_prime_gem_destroy().

Signed-off-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 5e0fb1f9
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -157,11 +157,10 @@ void exynos_drm_gem_destroy(struct exynos_drm_gem_obj *exynos_gem_obj)
	 * once dmabuf's refcount becomes 0.
	 */
	if (obj->import_attach)
		goto out;

		drm_prime_gem_destroy(obj, exynos_gem_obj->sgt);
	else
		exynos_drm_free_buf(exynos_gem_obj);

out:
	drm_gem_free_mmap_offset(obj);

	/* release file pointer to gem object. */
@@ -589,6 +588,8 @@ exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
	if (ret < 0)
		goto err_free_large;

	exynos_gem_obj->sgt = sgt;

	if (sgt->nents == 1) {
		/* always physically continuous memory if sgt->nents is 1. */
		exynos_gem_obj->flags |= EXYNOS_BO_CONTIG;
+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@
 *	- this address could be physical address without IOMMU and
 *	device address with IOMMU.
 * @pages: Array of backing pages.
 * @sgt: Imported sg_table.
 *
 * P.S. this object would be transferred to user as kms_bo.handle so
 *	user can access the buffer through kms_bo.handle.
@@ -52,6 +53,7 @@ struct exynos_drm_gem_obj {
	dma_addr_t		dma_addr;
	struct dma_attrs	dma_attrs;
	struct page		**pages;
	struct sg_table		*sgt;
};

struct page **exynos_gem_get_pages(struct drm_gem_object *obj, gfp_t gfpmask);