OMAPDSS: fix potential NULL pointer ref in OCP_ERR handling path
authorRob Clark <rob@ti.com>
Sun, 11 Dec 2011 20:02:27 +0000 (14:02 -0600)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 2 Jan 2012 06:51:26 +0000 (08:51 +0200)
The dispc's error handler tries to disable all outputs when OCP_ERR
happens. However, the code doesn't check if there actually is a display
on each particular output, nor if there's a driver for the display. This
may lead to NULL pointer reference.

Signed-off-by: Rob Clark <rob@ti.com>
[tomi.valkeinen@ti.com: added patch description]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dispc.c

index 0f84034..4d68428 100644 (file)
@@ -3201,7 +3201,8 @@ static void dispc_error_worker(struct work_struct *work)
                for (i = 0; i < omap_dss_get_num_overlay_managers(); ++i) {
                        struct omap_overlay_manager *mgr;
                        mgr = omap_dss_get_overlay_manager(i);
-                       mgr->device->driver->disable(mgr->device);
+                       if (mgr->device && mgr->device->driver)
+                               mgr->device->driver->disable(mgr->device);
                }
        }