forked from luck/tmp_suning_uos_patched
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:
967dd48417
("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 <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
8a54aa9285
commit
c9af3ed731
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user