x86, AMD IOMMU: initialize dma_ops after sysfs registration

If sysfs registration fails all memory used by IOMMU is freed. This
happens after dma_ops initialization and the functions will access the
freed memory then.

Fix this by initializing dma_ops after the sysfs registration.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Joerg Roedel 2008-08-14 19:55:18 +02:00 committed by Ingo Molnar
parent 8a456695c5
commit 129d6aba44

View File

@ -972,10 +972,6 @@ int __init amd_iommu_init(void)
if (acpi_table_parse("IVRS", init_memory_definitions) != 0)
goto free;
ret = amd_iommu_init_dma_ops();
if (ret)
goto free;
ret = sysdev_class_register(&amd_iommu_sysdev_class);
if (ret)
goto free;
@ -984,6 +980,10 @@ int __init amd_iommu_init(void)
if (ret)
goto free;
ret = amd_iommu_init_dma_ops();
if (ret)
goto free;
enable_iommus();
printk(KERN_INFO "AMD IOMMU: aperture size is %d MB\n",