[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <51795930-680c-49cc-a4e0-c7ae7e017bad@samsung.com>
Date: Tue, 7 Oct 2025 11:49:16 +0200
From: Marek Szyprowski <m.szyprowski@...sung.com>
To: Johan Hovold <johan@...nel.org>, Joerg Roedel <joro@...tes.org>, Will
Deacon <will@...nel.org>
Cc: Robin Murphy <robin.murphy@....com>, Sven Peter <sven@...nel.org>, Janne
Grunau <j@...nau.net>, Rob Clark <robin.clark@....qualcomm.com>, Yong Wu
<yong.wu@...iatek.com>, Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Chen-Yu Tsai <wens@...e.org>, Thierry Reding <thierry.reding@...il.com>,
Krishna Reddy <vdumpa@...dia.com>, iommu@...ts.linux.dev,
linux-kernel@...r.kernel.org, stable@...r.kernel.org, Yu Kuai
<yukuai3@...wei.com>
Subject: Re: [PATCH v2 03/14] iommu/exynos: fix device leak on of_xlate()
On 07.10.2025 11:43, Johan Hovold wrote:
> Make sure to drop the reference taken to the iommu platform device when
> looking up its driver data during of_xlate().
>
> Note that commit 1a26044954a6 ("iommu/exynos: add missing put_device()
> call in exynos_iommu_of_xlate()") fixed the leak in a couple of error
> paths, but the reference is still leaking on success.
>
> Fixes: aa759fd376fb ("iommu/exynos: Add callback for initializing devices from device tree")
> Cc: stable@...r.kernel.org # 4.2: 1a26044954a6
> Cc: Marek Szyprowski <m.szyprowski@...sung.com>
> Cc: Yu Kuai <yukuai3@...wei.com>
> Acked-by: Robin Murphy <robin.murphy@....com>
> Signed-off-by: Johan Hovold <johan@...nel.org>
Acked-by: Marek Szyprowski <m.szyprowski@...sung.com>
> ---
> drivers/iommu/exynos-iommu.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
> index b6edd178fe25..ce9e935cb84c 100644
> --- a/drivers/iommu/exynos-iommu.c
> +++ b/drivers/iommu/exynos-iommu.c
> @@ -1446,17 +1446,14 @@ static int exynos_iommu_of_xlate(struct device *dev,
> return -ENODEV;
>
> data = platform_get_drvdata(sysmmu);
> - if (!data) {
> - put_device(&sysmmu->dev);
> + put_device(&sysmmu->dev);
> + if (!data)
> return -ENODEV;
> - }
>
> if (!owner) {
> owner = kzalloc(sizeof(*owner), GFP_KERNEL);
> - if (!owner) {
> - put_device(&sysmmu->dev);
> + if (!owner)
> return -ENOMEM;
> - }
>
> INIT_LIST_HEAD(&owner->controllers);
> mutex_init(&owner->rpm_lock);
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
Powered by blists - more mailing lists