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 6fb7d74..bc7cc32 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);