]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/tegra: Fix ordering of cleanup code
authorThierry Reding <treding@nvidia.com>
Wed, 25 Sep 2019 11:26:59 +0000 (13:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Jan 2020 18:48:23 +0000 (19:48 +0100)
commit 051172e8c1ceef8749f19faacc1d3bef65d20d8d upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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);