aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2008-08-14 13:55:18 -0400
committerIngo Molnar <mingo@elte.hu>2008-08-15 07:56:56 -0400
commit129d6aba444d1e99d4cbfb9866a4652912426b65 (patch)
tree3c2c6dee01907dd7203dac640e4c34a66c321224
parent8a456695c5020d6317f9c7af190999e9414b0d3e (diff)
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>
-rw-r--r--arch/x86/kernel/amd_iommu_init.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index ceba33811537..a69cc0f52042 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -972,15 +972,15 @@ int __init amd_iommu_init(void)
972 if (acpi_table_parse("IVRS", init_memory_definitions) != 0) 972 if (acpi_table_parse("IVRS", init_memory_definitions) != 0)
973 goto free; 973 goto free;
974 974
975 ret = amd_iommu_init_dma_ops(); 975 ret = sysdev_class_register(&amd_iommu_sysdev_class);
976 if (ret) 976 if (ret)
977 goto free; 977 goto free;
978 978
979 ret = sysdev_class_register(&amd_iommu_sysdev_class); 979 ret = sysdev_register(&device_amd_iommu);
980 if (ret) 980 if (ret)
981 goto free; 981 goto free;
982 982
983 ret = sysdev_register(&device_amd_iommu); 983 ret = amd_iommu_init_dma_ops();
984 if (ret) 984 if (ret)
985 goto free; 985 goto free;
986 986