mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 06:40:54 +07:00
iommu/amd: Free page-table in protection_domain_free()
Align release of the page-table with the place where it is allocated. Signed-off-by: Joerg Roedel <jroedel@suse.de> Reviewed-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Link: https://lore.kernel.org/r/20200527115313.7426-6-joro@8bytes.org
This commit is contained in:
parent
a71730e225
commit
75b2774509
@ -2387,12 +2387,18 @@ static void cleanup_domain(struct protection_domain *domain)
|
||||
|
||||
static void protection_domain_free(struct protection_domain *domain)
|
||||
{
|
||||
struct domain_pgtable pgtable;
|
||||
|
||||
if (!domain)
|
||||
return;
|
||||
|
||||
if (domain->id)
|
||||
domain_id_free(domain->id);
|
||||
|
||||
amd_iommu_domain_get_pgtable(domain, &pgtable);
|
||||
atomic64_set(&domain->pt_root, 0);
|
||||
free_pagetable(&pgtable);
|
||||
|
||||
kfree(domain);
|
||||
}
|
||||
|
||||
@ -2476,7 +2482,6 @@ static struct iommu_domain *amd_iommu_domain_alloc(unsigned type)
|
||||
static void amd_iommu_domain_free(struct iommu_domain *dom)
|
||||
{
|
||||
struct protection_domain *domain;
|
||||
struct domain_pgtable pgtable;
|
||||
|
||||
domain = to_pdomain(dom);
|
||||
|
||||
@ -2494,10 +2499,6 @@ static void amd_iommu_domain_free(struct iommu_domain *dom)
|
||||
dma_ops_domain_free(domain);
|
||||
break;
|
||||
default:
|
||||
amd_iommu_domain_get_pgtable(domain, &pgtable);
|
||||
atomic64_set(&domain->pt_root, 0);
|
||||
free_pagetable(&pgtable);
|
||||
|
||||
if (domain->flags & PD_IOMMUV2_MASK)
|
||||
free_gcr3_table(domain);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user