On Tue Dec 16 15:34:13 2025 -0600, Brandon Brnich wrote:
> 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 <[email protected]>
> Signed-off-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
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 3216b4997644..76d57c6b636a 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);
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to