Skip to content

Commit

Permalink
video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_g…
Browse files Browse the repository at this point in the history
…cu_probe/remove()

In pxa3xx_gcu_probe(), the sequence of error lable is wrong, it will
leads some resource leaked, so adjust the sequence to handle the error
correctly, and if pxa3xx_gcu_add_buffer() fails, pxa3xx_gcu_free_buffers()
need be called.
In pxa3xx_gcu_remove(), add missing clk_disable_unpreprare().

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Helge Deller <deller@gmx.de>
  • Loading branch information
Yang Yingliang authored and Helge Deller committed May 19, 2022
1 parent 40189b7 commit d87ad45
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions drivers/video/fbdev/pxa3xx-gcu.c
Original file line number Diff line number Diff line change
Expand Up @@ -646,6 +646,7 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
for (i = 0; i < 8; i++) {
ret = pxa3xx_gcu_add_buffer(dev, priv);
if (ret) {
pxa3xx_gcu_free_buffers(dev, priv);
dev_err(dev, "failed to allocate DMA memory\n");
goto err_disable_clk;
}
Expand All @@ -662,15 +663,15 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
SHARED_SIZE, irq);
return 0;

err_free_dma:
dma_free_coherent(dev, SHARED_SIZE,
priv->shared, priv->shared_phys);
err_disable_clk:
clk_disable_unprepare(priv->clk);

err_misc_deregister:
misc_deregister(&priv->misc_dev);

err_disable_clk:
clk_disable_unprepare(priv->clk);
err_free_dma:
dma_free_coherent(dev, SHARED_SIZE,
priv->shared, priv->shared_phys);

return ret;
}
Expand All @@ -683,6 +684,7 @@ static int pxa3xx_gcu_remove(struct platform_device *pdev)
pxa3xx_gcu_wait_idle(priv);
misc_deregister(&priv->misc_dev);
dma_free_coherent(dev, SHARED_SIZE, priv->shared, priv->shared_phys);
clk_disable_unprepare(priv->clk);
pxa3xx_gcu_free_buffers(dev, priv);

return 0;
Expand Down

0 comments on commit d87ad45

Please sign in to comment.