Переглянути джерело

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);