Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
e28699a41c
1 değiştirilmiş dosya ile 4 ekleme ve 5 silme
  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);