mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
iommu/exynos: fix device leak on of_xlate()
Make sure to drop the reference taken to the iommu platform device when looking up its driver data during of_xlate(). Note that commit1a26044954("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:aa759fd376("iommu/exynos: Add callback for initializing devices from device tree") Cc: stable@vger.kernel.org # 4.2:1a26044954Cc: Yu Kuai <yukuai3@huawei.com> Acked-by: Robin Murphy <robin.murphy@arm.com> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
committed by
Joerg Roedel
parent
6a3908ce56
commit
05913cc43c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user