drm/msm: clean event_thread->worker in case of an error
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Fri, 17 Jun 2022 23:33:25 +0000 (02:33 +0300)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Mon, 9 Jan 2023 20:54:42 +0000 (22:54 +0200)
If worker creation fails, nullify the event_thread->worker, so that
msm_drm_uninit() doesn't try accessing invalid memory location. While we
are at it, remove duplicate assignment to the ret variable.

Fixes: 1041dee2178f ("drm/msm: use kthread_create_worker instead of kthread_run")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/490106/
Link: https://lore.kernel.org/r/20220617233328.1143665-2-dmitry.baryshkov@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/msm/msm_drv.c

index 5737364..0acba74 100644 (file)
@@ -492,7 +492,7 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
                if (IS_ERR(priv->event_thread[i].worker)) {
                        ret = PTR_ERR(priv->event_thread[i].worker);
                        DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n");
-                       ret = PTR_ERR(priv->event_thread[i].worker);
+                       priv->event_thread[i].worker = NULL;
                        goto err_msm_uninit;
                }