]> git.itanic.dy.fi Git - linux-stable/commitdiff
drm/msm: fix NULL-deref on irq uninstall
authorJohan Hovold <johan+linaro@kernel.org>
Mon, 6 Mar 2023 10:07:16 +0000 (11:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 May 2023 12:01:58 +0000 (14:01 +0200)
commit cd459c005de3e2b855a8cc7768e633ce9d018e9f upstream.

In case of early initialisation errors and on platforms that do not use
the DPU controller, the deinitilisation code can be called with the kms
pointer set to NULL.

Fixes: f026e431cf86 ("drm/msm: Convert to Linux IRQ interfaces")
Cc: stable@vger.kernel.org # 5.14
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/525104/
Link: https://lore.kernel.org/r/20230306100722.28485-5-johan+linaro@kernel.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/msm/msm_drv.c

index 17a59d73fe01ef0127a820d185f3a61ac860eedb..2f2bcdb671d215df6f41546d1bfe5644a882d9e9 100644 (file)
@@ -251,9 +251,11 @@ static int msm_drm_uninit(struct device *dev)
                drm_bridge_remove(priv->bridges[i]);
        priv->num_bridges = 0;
 
-       pm_runtime_get_sync(dev);
-       msm_irq_uninstall(ddev);
-       pm_runtime_put_sync(dev);
+       if (kms) {
+               pm_runtime_get_sync(dev);
+               msm_irq_uninstall(ddev);
+               pm_runtime_put_sync(dev);
+       }
 
        if (kms && kms->funcs)
                kms->funcs->destroy(kms);