diff mbox

drm/exynos: fix exynos_drm_gem_prime_import_sg_table() error handling

Message ID 1440664265-20641-1-git-send-email-jy0922.shim@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonyoung Shim Aug. 27, 2015, 8:31 a.m. UTC
If exynos_drm_gem_init() is failed, the result is ERR_PTR, so we should
just return the result. If not, wrong porinter will be referenced from
err label.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_gem.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Inki Dae Aug. 30, 2015, 4:10 p.m. UTC | #1
2015-08-27 17:31 GMT+09:00 Joonyoung Shim <jy0922.shim@samsung.com>:
> If exynos_drm_gem_init() is failed, the result is ERR_PTR, so we should
> just return the result. If not, wrong porinter will be referenced from
> err label.
>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_gem.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
> index 3e4a64a..4842a31 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
> @@ -569,10 +569,8 @@ exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
>         int ret;
>
>         exynos_gem_obj = exynos_drm_gem_init(dev, attach->dmabuf->size);
> -       if (IS_ERR(exynos_gem_obj)) {
> -               ret = PTR_ERR(exynos_gem_obj);
> -               goto err;
> -       }
> +       if (IS_ERR(exynos_gem_obj))
> +               return exynos_gem_obj;

This patch incurs below build warning,

drivers/gpu/drm/exynos/exynos_drm_gem.c: In function
'exynos_drm_gem_prime_import_sg_table':
drivers/gpu/drm/exynos/exynos_drm_gem.c:670:3: warning: return from
incompatible pointer type [enabled by default]

We can simply return ERR_PTR(ret) and I just fixed it.

>
>         exynos_gem_obj->dma_addr = sg_dma_address(sgt->sgl);
>
> --
> 1.9.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
Joonyoung Shim Sept. 1, 2015, 6:11 a.m. UTC | #2
On 08/31/2015 01:10 AM, Inki Dae wrote:
> 2015-08-27 17:31 GMT+09:00 Joonyoung Shim <jy0922.shim@samsung.com>:
>> If exynos_drm_gem_init() is failed, the result is ERR_PTR, so we should
>> just return the result. If not, wrong porinter will be referenced from
>> err label.
>>
>> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
>> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos_drm_gem.c | 6 ++----
>>  1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
>> index 3e4a64a..4842a31 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
>> @@ -569,10 +569,8 @@ exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
>>         int ret;
>>
>>         exynos_gem_obj = exynos_drm_gem_init(dev, attach->dmabuf->size);
>> -       if (IS_ERR(exynos_gem_obj)) {
>> -               ret = PTR_ERR(exynos_gem_obj);
>> -               goto err;
>> -       }
>> +       if (IS_ERR(exynos_gem_obj))
>> +               return exynos_gem_obj;
> 
> This patch incurs below build warning,
> 
> drivers/gpu/drm/exynos/exynos_drm_gem.c: In function
> 'exynos_drm_gem_prime_import_sg_table':
> drivers/gpu/drm/exynos/exynos_drm_gem.c:670:3: warning: return from
> incompatible pointer type [enabled by default]

Oops, i didn't check this warning.

> 
> We can simply return ERR_PTR(ret) and I just fixed it.
> 

Is it better to just return (void *)exynos_gem_obj instead of exynos_gem_obj?
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 3e4a64a..4842a31 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -569,10 +569,8 @@  exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
 	int ret;
 
 	exynos_gem_obj = exynos_drm_gem_init(dev, attach->dmabuf->size);
-	if (IS_ERR(exynos_gem_obj)) {
-		ret = PTR_ERR(exynos_gem_obj);
-		goto err;
-	}
+	if (IS_ERR(exynos_gem_obj))
+		return exynos_gem_obj;
 
 	exynos_gem_obj->dma_addr = sg_dma_address(sgt->sgl);