]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iommu/omap: fix device leaks on probe_device()
authorJohan Hovold <johan@kernel.org>
Mon, 20 Oct 2025 04:53:15 +0000 (06:53 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:14:40 +0000 (10:14 +0100)
commit b5870691065e6bbe6ba0650c0412636c6a239c5a upstream.

Make sure to drop the references taken to the iommu platform devices
when looking up their driver data during probe_device().

Note that the arch data device pointer added by commit 604629bcb505
("iommu/omap: add support for late attachment of iommu devices") has
never been used. Remove it to underline that the references are not
needed.

Fixes: 9d5018deec86 ("iommu/omap: Add support to program multiple iommus")
Fixes: 7d6827748d54 ("iommu/omap: Fix iommu archdata name for DT-based devices")
Cc: stable@vger.kernel.org # 3.18
Cc: Suman Anna <s-anna@ti.com>
Acked-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iommu/omap-iommu.c
drivers/iommu/omap-iommu.h

index c9528065a59afac738a6f06ba89ef11c90082a72..29f675aa7ea06a6261a37845653b78e9ea9226d4 100644 (file)
@@ -1688,6 +1688,7 @@ static struct iommu_device *omap_iommu_probe_device(struct device *dev)
                }
 
                oiommu = platform_get_drvdata(pdev);
+               put_device(&pdev->dev);
                if (!oiommu) {
                        of_node_put(np);
                        kfree(arch_data);
@@ -1695,7 +1696,6 @@ static struct iommu_device *omap_iommu_probe_device(struct device *dev)
                }
 
                tmp->iommu_dev = oiommu;
-               tmp->dev = &pdev->dev;
 
                of_node_put(np);
        }
index 27697109ec79a55953dd933302a27a76210a9858..50b39be61abc7d3885a6f94ea0e49c61eefb607c 100644 (file)
@@ -88,7 +88,6 @@ struct omap_iommu {
 /**
  * struct omap_iommu_arch_data - omap iommu private data
  * @iommu_dev: handle of the OMAP iommu device
- * @dev: handle of the iommu device
  *
  * This is an omap iommu private data object, which binds an iommu user
  * to its iommu device. This object should be placed at the iommu user's
@@ -97,7 +96,6 @@ struct omap_iommu {
  */
 struct omap_iommu_arch_data {
        struct omap_iommu *iommu_dev;
-       struct device *dev;
 };
 
 struct cr_regs {