From 336367fab9b96db7b0ee174443c426fc6c53b912 Mon Sep 17 00:00:00 2001 From: Brandon Brnich Date: Tue, 16 Dec 2025 15:34:13 -0600 Subject: [PATCH] media: chips-media: wave5: Fix Potential Probe Resource Leak After kthread creation during probe sequence, a handful of other failures could occur. If this were to happen, the kthread is never explicitly deleted which results in a resource leak. Add explicit cleanup of this resource. Signed-off-by: Brandon Brnich Signed-off-by: Nicolas Dufresne Signed-off-by: Hans Verkuil --- drivers/media/platform/chips-media/wave5/wave5-vpu.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu.c b/drivers/media/platform/chips-media/wave5/wave5-vpu.c index 3216b49976447..76d57c6b636a2 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpu.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu.c @@ -362,7 +362,7 @@ static int wave5_vpu_probe(struct platform_device *pdev) ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev); if (ret) { dev_err(&pdev->dev, "v4l2_device_register, fail: %d\n", ret); - goto err_vdi_release; + goto err_irq_release; } if (match_data->flags & WAVE5_IS_DEC) { @@ -407,7 +407,15 @@ err_dec_unreg: wave5_vpu_dec_unregister_device(dev); err_v4l2_unregister: v4l2_device_unregister(&dev->v4l2_dev); +err_irq_release: + if (dev->irq < 0) + kthread_destroy_worker(dev->worker); err_vdi_release: + if (dev->irq_thread) { + kthread_stop(dev->irq_thread); + up(&dev->irq_sem); + dev->irq_thread = NULL; + } wave5_vdi_release(&pdev->dev); err_clk_dis: clk_bulk_disable_unprepare(dev->num_clks, dev->clks); -- 2.47.3