]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling
authorKaustabh Chakraborty <kauschluss@disroot.org>
Thu, 26 Jun 2025 19:20:30 +0000 (00:50 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:30:45 +0000 (18:30 +0200)
commit b846350aa272de99bf6fecfa6b08e64ebfb13173 upstream.

If there's support for another console device (such as a TTY serial),
the kernel occasionally panics during boot. The panic message and a
relevant snippet of the call stack is as follows:

  Unable to handle kernel NULL pointer dereference at virtual address 000000000000000
  Call trace:
    drm_crtc_handle_vblank+0x10/0x30 (P)
    decon_irq_handler+0x88/0xb4
    [...]

Otherwise, the panics don't happen. This indicates that it's some sort
of race condition.

Add a check to validate if the drm device can handle vblanks before
calling drm_crtc_handle_vblank() to avoid this.

Cc: stable@vger.kernel.org
Fixes: 96976c3d9aff ("drm/exynos: Add DECON driver")
Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/exynos/exynos7_drm_decon.c

index 12989a47eb66e4949d4e1b19164cf351c54add71..d255c03aed225592d540bb618b37d00361dc0999 100644 (file)
@@ -601,6 +601,10 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id)
        if (!ctx->drm_dev)
                goto out;
 
+       /* check if crtc and vblank have been initialized properly */
+       if (!drm_dev_has_vblank(ctx->drm_dev))
+               goto out;
+
        if (!ctx->i80_if) {
                drm_crtc_handle_vblank(&ctx->crtc->base);