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: [email protected]
Fixes: 2f95bc6d324a ("drm: omapdrm: Perform initialization/cleanup at probe/remove 
time")
Signed-off-by: Ma Ke <[email protected]>
---
  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

Reply via email to