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: Seung-Woo Kim <sw0312.kim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
396464dfbb
commit
ca22e3cc25
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user