On Tue Sep 15 19:57:53 2026 +0800, Guangshuo Li wrote:
> The decoder probe allocates core_workqueue for architectures with a
> LAT processor. The probe failure paths destroy the workqueues, but the
> remove() function only destroys decode_workqueue.
> 
> As a result, removing a decoder on LAT architectures leaves core_workqueue
> allocated after the device lifetime has ended.
> 
> Destroy core_workqueue during remove for latency-based decoder
> architectures, matching the cleanup performed by the probe failure
> paths.
> 
> This issue was found by manual code inspection.
> 
> Fixes: 365e4ba01df4 ("media: mtk-vcodec: Add work queue for core hardware 
> decode")
> Cc: [email protected]
> Signed-off-by: Guangshuo Li <[email protected]>
> Reviewed-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c | 2 ++
 1 file changed, 2 insertions(+)

---

diff --git 
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c 
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c
index e936ed8dffba..426d060d937c 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c
@@ -570,6 +570,8 @@ static void mtk_vcodec_dec_remove(struct platform_device 
*pdev)
        struct mtk_vcodec_dec_dev *dev = platform_get_drvdata(pdev);
 
        destroy_workqueue(dev->decode_workqueue);
+       if (IS_VDEC_LAT_ARCH(dev->vdec_pdata->hw_arch))
+               destroy_workqueue(dev->core_workqueue);
 
        if (media_devnode_is_registered(dev->mdev_dec.devnode)) {
                media_device_unregister(&dev->mdev_dec);
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to