drm/tegra: Fix ordering of cleanup code
authorThierry Reding <treding@nvidia.com>
Wed, 25 Sep 2019 11:26:59 +0000 (13:26 +0200)
committerThierry Reding <treding@nvidia.com>
Thu, 24 Oct 2019 16:41:55 +0000 (18:41 +0200)
Commit Fixes: b9f8b09ce256 ("drm/tegra: Setup shared IOMMU domain after
initialization") changed the initialization order of the IOMMU related
bits but didn't update the cleanup path accordingly. This asymmetry can
cause failures during error recovery.

Fixes: b9f8b09ce256 ("drm/tegra: Setup shared IOMMU domain after initialization")
Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>
drivers/gpu/drm/tegra/drm.c

index 6fb7d74ff5530a062bf0754c8604399d93b60cad..bc7cc32140f813b5650f1b63633efd125e1cc200 100644 (file)
@@ -201,19 +201,19 @@ hub:
        if (tegra->hub)
                tegra_display_hub_cleanup(tegra->hub);
 device:
-       host1x_device_exit(device);
-fbdev:
-       drm_kms_helper_poll_fini(drm);
-       tegra_drm_fb_free(drm);
-config:
-       drm_mode_config_cleanup(drm);
-
        if (tegra->domain) {
                mutex_destroy(&tegra->mm_lock);
                drm_mm_takedown(&tegra->mm);
                put_iova_domain(&tegra->carveout.domain);
                iova_cache_put();
        }
+
+       host1x_device_exit(device);
+fbdev:
+       drm_kms_helper_poll_fini(drm);
+       tegra_drm_fb_free(drm);
+config:
+       drm_mode_config_cleanup(drm);
 domain:
        if (tegra->domain)
                iommu_domain_free(tegra->domain);