arm: plat-omap: iommu: fix request_mem_region() error path
request_mem_region() error exit will leak ioremapped memory. Fix this by moving the ioremap() after request_mem_region(), which is the proper order to do this anyway. Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
committed by
Tony Lindgren
parent
b235e00783
commit
da4a0f764a
@@ -982,11 +982,6 @@ static int __devinit omap_iommu_probe(struct platform_device *pdev)
|
|||||||
err = -ENODEV;
|
err = -ENODEV;
|
||||||
goto err_mem;
|
goto err_mem;
|
||||||
}
|
}
|
||||||
obj->regbase = ioremap(res->start, resource_size(res));
|
|
||||||
if (!obj->regbase) {
|
|
||||||
err = -ENOMEM;
|
|
||||||
goto err_mem;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = request_mem_region(res->start, resource_size(res),
|
res = request_mem_region(res->start, resource_size(res),
|
||||||
dev_name(&pdev->dev));
|
dev_name(&pdev->dev));
|
||||||
@@ -995,6 +990,12 @@ static int __devinit omap_iommu_probe(struct platform_device *pdev)
|
|||||||
goto err_mem;
|
goto err_mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obj->regbase = ioremap(res->start, resource_size(res));
|
||||||
|
if (!obj->regbase) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
goto err_ioremap;
|
||||||
|
}
|
||||||
|
|
||||||
irq = platform_get_irq(pdev, 0);
|
irq = platform_get_irq(pdev, 0);
|
||||||
if (irq < 0) {
|
if (irq < 0) {
|
||||||
err = -ENODEV;
|
err = -ENODEV;
|
||||||
@@ -1023,8 +1024,9 @@ static int __devinit omap_iommu_probe(struct platform_device *pdev)
|
|||||||
err_pgd:
|
err_pgd:
|
||||||
free_irq(irq, obj);
|
free_irq(irq, obj);
|
||||||
err_irq:
|
err_irq:
|
||||||
release_mem_region(res->start, resource_size(res));
|
|
||||||
iounmap(obj->regbase);
|
iounmap(obj->regbase);
|
||||||
|
err_ioremap:
|
||||||
|
release_mem_region(res->start, resource_size(res));
|
||||||
err_mem:
|
err_mem:
|
||||||
clk_put(obj->clk);
|
clk_put(obj->clk);
|
||||||
err_clk:
|
err_clk:
|
||||||
|
Reference in New Issue
Block a user