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

Commit ca22e3cc authored by Seung-Woo Kim's avatar Seung-Woo Kim Committed by Inki Dae
Browse files

drm/exynos: fixed wrong err ptr usage and destroy call in exeception



- exynos_drm_buf_create() returns err pointer so NULL check is wrong.
- Case that exynos_gem_obj is not created, destroy call in exception
  handle lable uses this pointer. so instead buffer is directly used.

Signed-off-by: default avatarSeung-Woo Kim <sw0312.kim@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 396464df
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -128,30 +128,25 @@ struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,

	struct exynos_drm_gem_obj *exynos_gem_obj = NULL;
	struct exynos_drm_gem_buf *buffer;
	int ret;

	size = roundup(size, PAGE_SIZE);

	DRM_DEBUG_KMS("%s: size = 0x%lx\n", __FILE__, size);

	buffer = exynos_drm_buf_create(dev, size);
	if (!buffer)
		return ERR_PTR(-ENOMEM);
	if (IS_ERR(buffer)) {
		return ERR_CAST(buffer);
	}

	exynos_gem_obj = exynos_drm_gem_init(dev, file_priv, handle, size);
	if (IS_ERR(exynos_gem_obj)) {
		ret = PTR_ERR(exynos_gem_obj);
		goto err_gem_init;
		exynos_drm_buf_destroy(dev, buffer);
		return exynos_gem_obj;
	}

	exynos_gem_obj->buffer = buffer;

	return exynos_gem_obj;

err_gem_init:
	exynos_drm_buf_destroy(dev, exynos_gem_obj->buffer);

	return ERR_PTR(ret);
}

int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data,