Преглед изворни кода

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 пре 6 година
родитељ
комит
e28699a41c
1 измењених фајлова са 4 додато и 5 уклоњено
  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);