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>
This commit is contained in:
parent
40189b7368
commit
d87ad457f7
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue