diff mbox series

drm/ingenic: fix error code in ingenic_drm_gem_create_object()

Message ID 20211118111522.GD1147@kili (mailing list archive)
State New, archived
Headers show
Series drm/ingenic: fix error code in ingenic_drm_gem_create_object() | expand

Commit Message

Dan Carpenter Nov. 18, 2021, 11:15 a.m. UTC
The ->gem_create_object() function pointers are supposed to return NULL
on error.  This function returns an error pointer but none of the
callers expect that so it will lead to an Oops.  See drm_gem_vram_create()
for example of it checks for NULL but an error pointer would lead to a
crash.

Fixes: 4a791cb6d34f ("drm/ingenic: Add option to alloc cached GEM buffers")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Zimmermann Dec. 9, 2021, 8:10 a.m. UTC | #1
FYI this issue was fixed by [1]. Please don't merge.

[1] 
https://lore.kernel.org/dri-devel/20211130095255.26710-1-tzimmermann@suse.de/

Am 18.11.21 um 12:15 schrieb Dan Carpenter:
> The ->gem_create_object() function pointers are supposed to return NULL
> on error.  This function returns an error pointer but none of the
> callers expect that so it will lead to an Oops.  See drm_gem_vram_create()
> for example of it checks for NULL but an error pointer would lead to a
> crash.
> 
> Fixes: 4a791cb6d34f ("drm/ingenic: Add option to alloc cached GEM buffers")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
>   drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index a5df1c8d34cd..eb7266a0b037 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -757,7 +757,7 @@ ingenic_drm_gem_create_object(struct drm_device *drm, size_t size)
>   
>   	obj = kzalloc(sizeof(*obj), GFP_KERNEL);
>   	if (!obj)
> -		return ERR_PTR(-ENOMEM);
> +		return NULL;
>   
>   	obj->map_noncoherent = priv->soc_info->map_noncoherent;
>   
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index a5df1c8d34cd..eb7266a0b037 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -757,7 +757,7 @@  ingenic_drm_gem_create_object(struct drm_device *drm, size_t size)
 
 	obj = kzalloc(sizeof(*obj), GFP_KERNEL);
 	if (!obj)
-		return ERR_PTR(-ENOMEM);
+		return NULL;
 
 	obj->map_noncoherent = priv->soc_info->map_noncoherent;