Commit ca3c61f3 authored by Daeseok Youn's avatar Daeseok Youn Committed by Greg Kroah-Hartman

drivers: uio_dmem_genirq: Fix memory leak in uio_dmem_genirq_probe()

When platform_get_irq() is failed after "priv" allocated,
it need to free "priv". But the label of bad0 doesn't try
to free about "priv". So this patch changes that lable to "bad1".
But "bad1" has pm_runtime_disable() call, this function should
be called when uio_register_device() is failed. So it is moved
into handling error for uio_register_device().
Signed-off-by: default avatarDaeseok Youn <daeseok.youn@gmail.com>
Signed-off-by: default avatarHans J. Koch <hjk@hansjkoch.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a0f10464
...@@ -204,7 +204,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev) ...@@ -204,7 +204,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
ret = platform_get_irq(pdev, 0); ret = platform_get_irq(pdev, 0);
if (ret < 0) { if (ret < 0) {
dev_err(&pdev->dev, "failed to get IRQ\n"); dev_err(&pdev->dev, "failed to get IRQ\n");
goto bad0; goto bad1;
} }
uioinfo->irq = ret; uioinfo->irq = ret;
} }
...@@ -275,6 +275,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev) ...@@ -275,6 +275,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
ret = uio_register_device(&pdev->dev, priv->uioinfo); ret = uio_register_device(&pdev->dev, priv->uioinfo);
if (ret) { if (ret) {
dev_err(&pdev->dev, "unable to register uio device\n"); dev_err(&pdev->dev, "unable to register uio device\n");
pm_runtime_disable(&pdev->dev);
goto bad1; goto bad1;
} }
...@@ -282,7 +283,6 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev) ...@@ -282,7 +283,6 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
return 0; return 0;
bad1: bad1:
kfree(priv); kfree(priv);
pm_runtime_disable(&pdev->dev);
bad0: bad0:
/* kfree uioinfo for OF */ /* kfree uioinfo for OF */
if (pdev->dev.of_node) if (pdev->dev.of_node)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment