]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/amd: Fix sysfs leak in iommu init
authorKun(llfl) <llfl@linux.alibaba.com>
Thu, 9 May 2024 00:42:20 +0000 (08:42 +0800)
committerJoerg Roedel <jroedel@suse.de>
Tue, 4 Jun 2024 11:50:15 +0000 (13:50 +0200)
During the iommu initialization, iommu_init_pci() adds sysfs nodes.
However, these nodes aren't remove in free_iommu_resources() subsequently.

Fixes: 39ab9555c241 ("iommu: Add sysfs bindings for struct iommu_device")
Signed-off-by: Kun(llfl) <llfl@linux.alibaba.com>
Reviewed-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Link: https://lore.kernel.org/r/c8e0d11c6ab1ee48299c288009cf9c5dae07b42d.1715215003.git.llfl@linux.alibaba.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/init.c

index a18e74878f68a0815965fb324b60467b0853c688..27e2937270950bf3066f0759248c4eefba43e62a 100644 (file)
@@ -1626,8 +1626,17 @@ static void __init free_pci_segments(void)
        }
 }
 
+static void __init free_sysfs(struct amd_iommu *iommu)
+{
+       if (iommu->iommu.dev) {
+               iommu_device_unregister(&iommu->iommu);
+               iommu_device_sysfs_remove(&iommu->iommu);
+       }
+}
+
 static void __init free_iommu_one(struct amd_iommu *iommu)
 {
+       free_sysfs(iommu);
        free_cwwb_sem(iommu);
        free_command_buffer(iommu);
        free_event_buffer(iommu);