Message ID | 20190411184741.27540-10-tmurphy@arista.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iommu/amd: Convert the AMD iommu driver to the dma-iommu api | expand |
On Thu, Apr 11, 2019 at 07:47:38PM +0100, Tom Murphy via iommu wrote: > dma_ops_domain_free() expects domain to be in a global list. > Arguably, could be called before protection_domain_init(). > > Signed-off-by: Dmitry Safonov <dima@arista.com> > Signed-off-by: Tom Murphy <tmurphy@arista.com> This seems like a fix to the existing code and should probably go out first.
>This seems like a fix to the existing code and should probably go out first. I'll send this patch out on it's own now. On Mon, Apr 15, 2019 at 7:23 AM Christoph Hellwig <hch@infradead.org> wrote: > > On Thu, Apr 11, 2019 at 07:47:38PM +0100, Tom Murphy via iommu wrote: > > dma_ops_domain_free() expects domain to be in a global list. > > Arguably, could be called before protection_domain_init(). > > > > Signed-off-by: Dmitry Safonov <dima@arista.com> > > Signed-off-by: Tom Murphy <tmurphy@arista.com> > > This seems like a fix to the existing code and should probably go > out first.
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 02b351834a3b..bfb021d656aa 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -1801,8 +1801,12 @@ static struct protection_domain *dma_ops_domain_alloc(void) if (!domain) return NULL; - if (protection_domain_init(domain)) - goto free_domain; + if (protection_domain_init(domain)) { + kfree(domain); + return NULL; + } + + add_domain_to_list(domain); domain->mode = PAGE_MODE_3_LEVEL; domain->pt_root = (void *)get_zeroed_page(GFP_KERNEL); @@ -1824,8 +1828,6 @@ static struct protection_domain *dma_ops_domain_alloc(void) /* Initialize reserved ranges */ iommu_dma_copy_reserved_iova(&reserved_iova_ranges, &domain->domain); - add_domain_to_list(domain); - return domain; free_cookie: