ARM: SMMU: clear page table ops of attached device
incase of error during dynamic attach, added smmu attach device cleanup along with free page table ops Change-Id: Id8984d05002700014307a905fc7166702fa64a7d Signed-off-by: vkakani <vkakani@codeaurora.org>
This commit is contained in:
parent
7c542d932b
commit
528c99691b
1 changed files with 10 additions and 1 deletions
|
@ -2256,8 +2256,17 @@ static int arm_smmu_attach_dynamic(struct iommu_domain *domain,
|
||||||
smmu_domain->pgtbl_ops = pgtbl_ops;
|
smmu_domain->pgtbl_ops = pgtbl_ops;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
out:
|
out:
|
||||||
if (ret)
|
if (ret) {
|
||||||
free_io_pgtable_ops(pgtbl_ops);
|
free_io_pgtable_ops(pgtbl_ops);
|
||||||
|
/* unassign any freed page table memory */
|
||||||
|
if (arm_smmu_is_master_side_secure(smmu_domain)) {
|
||||||
|
arm_smmu_secure_domain_lock(smmu_domain);
|
||||||
|
arm_smmu_secure_pool_destroy(smmu_domain);
|
||||||
|
arm_smmu_unassign_table(smmu_domain);
|
||||||
|
arm_smmu_secure_domain_unlock(smmu_domain);
|
||||||
|
}
|
||||||
|
smmu_domain->pgtbl_ops = NULL;
|
||||||
|
}
|
||||||
mutex_unlock(&smmu->attach_lock);
|
mutex_unlock(&smmu->attach_lock);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Reference in a new issue