Hello Joonyoung Shim,
The patch 2a8cb4894540: "drm/exynos: merge exynos_drm_buf.c to
exynos_drm_gem.c" from Aug 16, 2015, leads to the following static
checker warning:
drivers/gpu/drm/exynos/exynos_drm_gem.c:610
exynos_drm_gem_prime_import_sg_table()
error: 'exynos_gem_obj' dereferencing possible ERR_PTR()
drivers/gpu/drm/exynos/exynos_drm_gem.c
562 struct drm_gem_object *
563 exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
564 struct dma_buf_attachment *attach,
565 struct sg_table *sgt)
566 {
567 struct exynos_drm_gem_obj *exynos_gem_obj;
568 int npages;
569 int ret;
570
571 exynos_gem_obj = exynos_drm_gem_init(dev, attach->dmabuf->size);
572 if (IS_ERR(exynos_gem_obj)) {
573 ret = PTR_ERR(exynos_gem_obj);
exynos_gem_obj is an ERR_PTR.
574 goto err;
575 }
576
577 exynos_gem_obj->dma_addr = sg_dma_address(sgt->sgl);
603
604 return &exynos_gem_obj->base;
605
606 err_free_large:
607 drm_free_large(exynos_gem_obj->pages);
608 err:
609 drm_gem_object_release(&exynos_gem_obj->base);
610 kfree(exynos_gem_obj);
So both the drm_gem_object_release() and kfree() will crash. Do we
really need both? I feel like there should be a single free function
which undoes the exynos_drm_gem_init() function. Also the
exynos_drm_gem_init() has no documentation about how it is supposed to
be freed.
611 return ERR_PTR(ret);
612 }
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html