From: Tomi Valkeinen Date: Fri, 24 Mar 2017 07:58:49 +0000 (+0200) Subject: drm/omap: fix crash on module unload X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=c9af3ed7311f5fbc4b0e109daddfcc8a47267331;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git drm/omap: fix crash on module unload When unloading omapdrm we get a NULL pointer deref in omap_drm_irq_uninstall(). This is caused by: 967dd48417874dd25491a4e933648f394a64f70f ("drm: remove drm_vblank_no_hw_counter assignment from driver code") We shut down all the crtcs at unload time before calling omap_drm_irq_uninstall, so the code in omap_drm_irq_uninstall() is unnecessary and can be removed. Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart --- diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c b/drivers/gpu/drm/omapdrm/omap_irq.c index 26a3c06aa14d..115104cdcc59 100644 --- a/drivers/gpu/drm/omapdrm/omap_irq.c +++ b/drivers/gpu/drm/omapdrm/omap_irq.c @@ -285,25 +285,11 @@ int omap_drm_irq_install(struct drm_device *dev) void omap_drm_irq_uninstall(struct drm_device *dev) { struct omap_drm_private *priv = dev->dev_private; - unsigned long irqflags; - int i; if (!dev->irq_enabled) return; dev->irq_enabled = false; - /* Wake up any waiters so they don't hang. */ - if (dev->num_crtcs) { - spin_lock_irqsave(&dev->vbl_lock, irqflags); - for (i = 0; i < dev->num_crtcs; i++) { - wake_up(&dev->vblank[i].queue); - dev->vblank[i].enabled = false; - dev->vblank[i].last = - dev->driver->get_vblank_counter(dev, i); - } - spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - } - priv->dispc_ops->free_irq(dev); }