Skip to content

Commit

Permalink
drm/exynos: fixed wrong err ptr usage and destroy call in exeception
Browse files Browse the repository at this point in the history
- 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>
  • Loading branch information
Seung-Woo Kim authored and Inki Dae committed Nov 17, 2011
1 parent 396464d commit ca22e3c
Showing 1 changed file with 5 additions and 10 deletions.
15 changes: 5 additions & 10 deletions drivers/gpu/drm/exynos/exynos_drm_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit ca22e3c

Please sign in to comment.