Message ID | 20190925112659.2048-1-thierry.reding@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/tegra: Fix ordering of cleanup code | expand |
25.09.2019 14:26, Thierry Reding пишет: > From: Thierry Reding <treding@nvidia.com> > > 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> > --- > drivers/gpu/drm/tegra/drm.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c > index 6fb7d74ff553..bc7cc32140f8 100644 > --- a/drivers/gpu/drm/tegra/drm.c > +++ b/drivers/gpu/drm/tegra/drm.c > @@ -201,19 +201,19 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) > 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); > Hello Thierry, Good that you spotted this! I had a similar patch sometime ago, but my version had some problem and then I just forgot about it. I tried yours patch and didn't notice anything wrong, thanks! Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Tested-by: Dmitry Osipenko <digetx@gmail.com>
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 6fb7d74ff553..bc7cc32140f8 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -201,19 +201,19 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) 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);