Procházet zdrojové kódy

drm/omap: Fix omapdrm_init error path

When adding support for hw_overlays and global state object, the order
in which the cleanup was added to the error path was wrong, as things
should be cleaned up the reverse order in which they were created.

Fixes: 730a8131571c ("drm/omap: Add global state as a private atomic object")
Fixes: 974e39a9cbae ("drm/omap: introduce omap_hw_overlay")
Signed-off-by: Benoit Parrot <bparrot@ti.com>
Benoit Parrot před 6 roky
rodič
revize
e28699a41c
1 změnil soubory, kde provedl 4 přidání a 5 odebrání
  1. 4 5
      drivers/gpu/drm/omapdrm/omap_drv.c

+ 4 - 5
drivers/gpu/drm/omapdrm/omap_drv.c

@@ -888,10 +888,10 @@ err_cleanup_helpers:
 err_cleanup_modeset:
 	drm_mode_config_cleanup(ddev);
 	omap_drm_irq_uninstall(ddev);
-err_free_priv_obj:
-	omap_global_obj_fini(priv);
 err_free_overlays:
 	omap_hwoverlays_destroy(priv);
+err_free_priv_obj:
+	omap_global_obj_fini(priv);
 err_gem_deinit:
 	omap_gem_deinit(ddev);
 	destroy_workqueue(priv->wq);
@@ -922,10 +922,9 @@ static void omapdrm_cleanup(struct omap_drm_private *priv)
 	drm_mode_config_cleanup(ddev);
 
 	omap_drm_irq_uninstall(ddev);
-	omap_gem_deinit(ddev);
-
-	omap_global_obj_fini(priv);
 	omap_hwoverlays_destroy(priv);
+	omap_global_obj_fini(priv);
+	omap_gem_deinit(ddev);
 
 	destroy_workqueue(priv->wq);