* [PATCH] drm: omapdrm: Add missing check for alloc_ordered_workqueue
@ 2024-08-08 6:13 Ma Ke
2024-08-08 10:47 ` Tomi Valkeinen
0 siblings, 1 reply; 2+ messages in thread
From: Ma Ke @ 2024-08-08 6:13 UTC (permalink / raw)
To: tomi.valkeinen, maarten.lankhorst, mripard, tzimmermann, airlied,
daniel, laurent.pinchart
Cc: dri-devel, linux-kernel, Ma Ke, stable
As it may return NULL pointer and cause NULL pointer dereference. Add check
for the return value of alloc_ordered_workqueue.
Cc: stable@vger.kernel.org
Fixes: 2f95bc6d324a ("drm: omapdrm: Perform initialization/cleanup at probe/remove time")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
---
drivers/gpu/drm/omapdrm/omap_drv.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 6598c9c08ba1..94a57f0d1c08 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -695,6 +695,10 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
soc = soc_device_match(omapdrm_soc_devices);
priv->omaprev = soc ? (uintptr_t)soc->data : 0;
priv->wq = alloc_ordered_workqueue("omapdrm", 0);
+ if (!priv->wq) {
+ ret = -ENOMEM;
+ goto err_alloc_workqueue;
+ }
mutex_init(&priv->list_lock);
INIT_LIST_HEAD(&priv->obj_list);
@@ -753,6 +757,7 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
drm_mode_config_cleanup(ddev);
omap_gem_deinit(ddev);
destroy_workqueue(priv->wq);
+err_alloc_workqueue:
omap_disconnect_pipelines(ddev);
drm_dev_put(ddev);
return ret;
--
2.25.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] drm: omapdrm: Add missing check for alloc_ordered_workqueue
2024-08-08 6:13 [PATCH] drm: omapdrm: Add missing check for alloc_ordered_workqueue Ma Ke
@ 2024-08-08 10:47 ` Tomi Valkeinen
0 siblings, 0 replies; 2+ messages in thread
From: Tomi Valkeinen @ 2024-08-08 10:47 UTC (permalink / raw)
To: Ma Ke
Cc: dri-devel, linux-kernel, stable, maarten.lankhorst, mripard,
tzimmermann, airlied, daniel, laurent.pinchart
On 08/08/2024 09:13, Ma Ke wrote:
> As it may return NULL pointer and cause NULL pointer dereference. Add check
> for the return value of alloc_ordered_workqueue.
>
> Cc: stable@vger.kernel.org
> Fixes: 2f95bc6d324a ("drm: omapdrm: Perform initialization/cleanup at probe/remove time")
> Signed-off-by: Ma Ke <make24@iscas.ac.cn>
> ---
> drivers/gpu/drm/omapdrm/omap_drv.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 6598c9c08ba1..94a57f0d1c08 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -695,6 +695,10 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
> soc = soc_device_match(omapdrm_soc_devices);
> priv->omaprev = soc ? (uintptr_t)soc->data : 0;
> priv->wq = alloc_ordered_workqueue("omapdrm", 0);
> + if (!priv->wq) {
> + ret = -ENOMEM;
> + goto err_alloc_workqueue;
> + }
>
> mutex_init(&priv->list_lock);
> INIT_LIST_HEAD(&priv->obj_list);
> @@ -753,6 +757,7 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
> drm_mode_config_cleanup(ddev);
> omap_gem_deinit(ddev);
> destroy_workqueue(priv->wq);
> +err_alloc_workqueue:
> omap_disconnect_pipelines(ddev);
> drm_dev_put(ddev);
> return ret;
Thanks, I'll pick this up to drm-misc.
Tomi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-08-08 10:47 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-08 6:13 [PATCH] drm: omapdrm: Add missing check for alloc_ordered_workqueue Ma Ke
2024-08-08 10:47 ` Tomi Valkeinen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®