Skip to content

Commit d87ad45

Browse files
Yang Yinglianghdeller
authored andcommitted
video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_gcu_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>
1 parent 40189b7 commit d87ad45

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

drivers/video/fbdev/pxa3xx-gcu.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,7 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
646646
for (i = 0; i < 8; i++) {
647647
ret = pxa3xx_gcu_add_buffer(dev, priv);
648648
if (ret) {
649+
pxa3xx_gcu_free_buffers(dev, priv);
649650
dev_err(dev, "failed to allocate DMA memory\n");
650651
goto err_disable_clk;
651652
}
@@ -662,15 +663,15 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
662663
SHARED_SIZE, irq);
663664
return 0;
664665

665-
err_free_dma:
666-
dma_free_coherent(dev, SHARED_SIZE,
667-
priv->shared, priv->shared_phys);
666+
err_disable_clk:
667+
clk_disable_unprepare(priv->clk);
668668

669669
err_misc_deregister:
670670
misc_deregister(&priv->misc_dev);
671671

672-
err_disable_clk:
673-
clk_disable_unprepare(priv->clk);
672+
err_free_dma:
673+
dma_free_coherent(dev, SHARED_SIZE,
674+
priv->shared, priv->shared_phys);
674675

675676
return ret;
676677
}
@@ -683,6 +684,7 @@ static int pxa3xx_gcu_remove(struct platform_device *pdev)
683684
pxa3xx_gcu_wait_idle(priv);
684685
misc_deregister(&priv->misc_dev);
685686
dma_free_coherent(dev, SHARED_SIZE, priv->shared, priv->shared_phys);
687+
clk_disable_unprepare(priv->clk);
686688
pxa3xx_gcu_free_buffers(dev, priv);
687689

688690
return 0;

0 commit comments

Comments
 (0)