mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 05:04:00 +08:00
media: bdisp: add missed destroy_workqueue in remove and probe failure
The driver forgets to call destroy_workqueue when remove and probe fails. Add the missed calls to fix it. Signed-off-by: Chuhong Yuan <hslester96@gmail.com> Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
569bc8d6a6
commit
8ea1c5af48
@ -1274,6 +1274,8 @@ static int bdisp_remove(struct platform_device *pdev)
|
|||||||
if (!IS_ERR(bdisp->clock))
|
if (!IS_ERR(bdisp->clock))
|
||||||
clk_unprepare(bdisp->clock);
|
clk_unprepare(bdisp->clock);
|
||||||
|
|
||||||
|
destroy_workqueue(bdisp->work_queue);
|
||||||
|
|
||||||
dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name);
|
dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1317,20 +1319,22 @@ static int bdisp_probe(struct platform_device *pdev)
|
|||||||
bdisp->regs = devm_ioremap_resource(dev, res);
|
bdisp->regs = devm_ioremap_resource(dev, res);
|
||||||
if (IS_ERR(bdisp->regs)) {
|
if (IS_ERR(bdisp->regs)) {
|
||||||
dev_err(dev, "failed to get regs\n");
|
dev_err(dev, "failed to get regs\n");
|
||||||
return PTR_ERR(bdisp->regs);
|
ret = PTR_ERR(bdisp->regs);
|
||||||
|
goto err_wq;
|
||||||
}
|
}
|
||||||
|
|
||||||
bdisp->clock = devm_clk_get(dev, BDISP_NAME);
|
bdisp->clock = devm_clk_get(dev, BDISP_NAME);
|
||||||
if (IS_ERR(bdisp->clock)) {
|
if (IS_ERR(bdisp->clock)) {
|
||||||
dev_err(dev, "failed to get clock\n");
|
dev_err(dev, "failed to get clock\n");
|
||||||
return PTR_ERR(bdisp->clock);
|
ret = PTR_ERR(bdisp->clock);
|
||||||
|
goto err_wq;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = clk_prepare(bdisp->clock);
|
ret = clk_prepare(bdisp->clock);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(dev, "clock prepare failed\n");
|
dev_err(dev, "clock prepare failed\n");
|
||||||
bdisp->clock = ERR_PTR(-EINVAL);
|
bdisp->clock = ERR_PTR(-EINVAL);
|
||||||
return ret;
|
goto err_wq;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||||
@ -1402,7 +1406,8 @@ err_v4l2:
|
|||||||
err_clk:
|
err_clk:
|
||||||
if (!IS_ERR(bdisp->clock))
|
if (!IS_ERR(bdisp->clock))
|
||||||
clk_unprepare(bdisp->clock);
|
clk_unprepare(bdisp->clock);
|
||||||
|
err_wq:
|
||||||
|
destroy_workqueue(bdisp->work_queue);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user