Re: [PATCH] drm: omapdrm: Add missing check for alloc_ordered_workqueue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx
Fixes: 2f95bc6d324a ("drm: omapdrm: Perform initialization/cleanup at probe/remove time")
Signed-off-by: Ma Ke <make24@xxxxxxxxxxx>
---
  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





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux