projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6729c73
)
drm: omapdrm: Add missing check for alloc_ordered_workqueue
author
Ma Ke
<make24@iscas.ac.cn>
Thu, 8 Aug 2024 06:13:36 +0000
(14:13 +0800)
committer
Tomi Valkeinen
<tomi.valkeinen@ideasonboard.com>
Mon, 26 Aug 2024 09:47:04 +0000
(12:47 +0300)
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>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Link:
https://patchwork.freedesktop.org/patch/msgid/20240808061336.2796729-1-make24@iscas.ac.cn
drivers/gpu/drm/omapdrm/omap_drv.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/omapdrm/omap_drv.c
b/drivers/gpu/drm/omapdrm/omap_drv.c
index
6598c9c
..
d3eac48
100644
(file)
--- 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
@@
err_gem_deinit:
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;