Message ID | 20211129182633.480021-2-jernej.skrabec@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: hantro: add Allwinner H6 support | expand |
Hi Jernej, W dniu 29.11.2021 o 19:26, Jernej Skrabec pisze: > If clocks for some reason couldn't be enabled, probe function returns > immediately, without disabling PM. This obviously leaves PM ref counters > unbalanced. > > Fix that by jumping to appropriate error path, so effects of PM functions > are reversed. > > Fixes: 775fec69008d ("media: add Rockchip VPU JPEG encoder driver") > Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> Acked-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> > --- > drivers/staging/media/hantro/hantro_drv.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c > index ab2467998d29..3d3107a39dae 100644 > --- a/drivers/staging/media/hantro/hantro_drv.c > +++ b/drivers/staging/media/hantro/hantro_drv.c > @@ -981,7 +981,7 @@ static int hantro_probe(struct platform_device *pdev) > ret = clk_bulk_prepare(vpu->variant->num_clocks, vpu->clocks); > if (ret) { > dev_err(&pdev->dev, "Failed to prepare clocks\n"); > - return ret; > + goto err_pm_disable; > } > > ret = v4l2_device_register(&pdev->dev, &vpu->v4l2_dev); > @@ -1037,6 +1037,7 @@ static int hantro_probe(struct platform_device *pdev) > v4l2_device_unregister(&vpu->v4l2_dev); > err_clk_unprepare: > clk_bulk_unprepare(vpu->variant->num_clocks, vpu->clocks); > +err_pm_disable: > pm_runtime_dont_use_autosuspend(vpu->dev); > pm_runtime_disable(vpu->dev); > return ret; >
On Mon, Nov 29, 2021 at 07:26:25PM +0100, Jernej Skrabec wrote: > If clocks for some reason couldn't be enabled, probe function returns > immediately, without disabling PM. This obviously leaves PM ref counters > unbalanced. > > Fix that by jumping to appropriate error path, so effects of PM functions > are reversed. > > Fixes: 775fec69008d ("media: add Rockchip VPU JPEG encoder driver") > Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Thanks! > --- > drivers/staging/media/hantro/hantro_drv.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c > index ab2467998d29..3d3107a39dae 100644 > --- a/drivers/staging/media/hantro/hantro_drv.c > +++ b/drivers/staging/media/hantro/hantro_drv.c > @@ -981,7 +981,7 @@ static int hantro_probe(struct platform_device *pdev) > ret = clk_bulk_prepare(vpu->variant->num_clocks, vpu->clocks); > if (ret) { > dev_err(&pdev->dev, "Failed to prepare clocks\n"); > - return ret; > + goto err_pm_disable; > } > > ret = v4l2_device_register(&pdev->dev, &vpu->v4l2_dev); > @@ -1037,6 +1037,7 @@ static int hantro_probe(struct platform_device *pdev) > v4l2_device_unregister(&vpu->v4l2_dev); > err_clk_unprepare: > clk_bulk_unprepare(vpu->variant->num_clocks, vpu->clocks); > +err_pm_disable: > pm_runtime_dont_use_autosuspend(vpu->dev); > pm_runtime_disable(vpu->dev); > return ret; > -- > 2.34.1 >
diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c index ab2467998d29..3d3107a39dae 100644 --- a/drivers/staging/media/hantro/hantro_drv.c +++ b/drivers/staging/media/hantro/hantro_drv.c @@ -981,7 +981,7 @@ static int hantro_probe(struct platform_device *pdev) ret = clk_bulk_prepare(vpu->variant->num_clocks, vpu->clocks); if (ret) { dev_err(&pdev->dev, "Failed to prepare clocks\n"); - return ret; + goto err_pm_disable; } ret = v4l2_device_register(&pdev->dev, &vpu->v4l2_dev); @@ -1037,6 +1037,7 @@ static int hantro_probe(struct platform_device *pdev) v4l2_device_unregister(&vpu->v4l2_dev); err_clk_unprepare: clk_bulk_unprepare(vpu->variant->num_clocks, vpu->clocks); +err_pm_disable: pm_runtime_dont_use_autosuspend(vpu->dev); pm_runtime_disable(vpu->dev); return ret;
If clocks for some reason couldn't be enabled, probe function returns immediately, without disabling PM. This obviously leaves PM ref counters unbalanced. Fix that by jumping to appropriate error path, so effects of PM functions are reversed. Fixes: 775fec69008d ("media: add Rockchip VPU JPEG encoder driver") Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> --- drivers/staging/media/hantro/hantro_drv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)