drm/msm/dpu: Avoid calling _dpu_kms_mmu_destroy() on init failure
Fix the error paths in _dpu_kms_mmu_init() to properly clean up the iommu domain and not call _dpu_kms_mmu_destroy() when things are only partially setup. Reviewed-by: Rob Clark <robdclark@chromium.org> Signed-off-by: Sean Paul <seanpaul@chromium.org> Link: https://patchwork.freedesktop.org/patch/msgid/20190617200405.131843-2-sean@poorly.run
This commit is contained in:
@@ -745,25 +745,20 @@ static int _dpu_kms_mmu_init(struct dpu_kms *dpu_kms)
|
|||||||
aspace = msm_gem_address_space_create(dpu_kms->dev->dev,
|
aspace = msm_gem_address_space_create(dpu_kms->dev->dev,
|
||||||
domain, "dpu1");
|
domain, "dpu1");
|
||||||
if (IS_ERR(aspace)) {
|
if (IS_ERR(aspace)) {
|
||||||
ret = PTR_ERR(aspace);
|
iommu_domain_free(domain);
|
||||||
goto fail;
|
return PTR_ERR(aspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
dpu_kms->base.aspace = aspace;
|
|
||||||
|
|
||||||
ret = aspace->mmu->funcs->attach(aspace->mmu, iommu_ports,
|
ret = aspace->mmu->funcs->attach(aspace->mmu, iommu_ports,
|
||||||
ARRAY_SIZE(iommu_ports));
|
ARRAY_SIZE(iommu_ports));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
DPU_ERROR("failed to attach iommu %d\n", ret);
|
DPU_ERROR("failed to attach iommu %d\n", ret);
|
||||||
msm_gem_address_space_put(aspace);
|
msm_gem_address_space_put(aspace);
|
||||||
goto fail;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dpu_kms->base.aspace = aspace;
|
||||||
return 0;
|
return 0;
|
||||||
fail:
|
|
||||||
_dpu_kms_mmu_destroy(dpu_kms);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct dss_clk *_dpu_kms_get_clk(struct dpu_kms *dpu_kms,
|
static struct dss_clk *_dpu_kms_get_clk(struct dpu_kms *dpu_kms,
|
||||||
|
Reference in New Issue
Block a user