On Wed Apr 1 11:44:15 2026 +0200, Louis-Alexis Eyraud wrote:
> Since a recent fix the mtk_jpeg_release function cancels any pending
> or running work present in the driver workqueue using
> cancel_work_sync function.
> Currently, only the multicore based variants use this workqueue and they
> have the jpeg_worker platform data field initialized with a workqueue
> callback function. For the others, this field value remain NULL by
> default.
> The cancel_work_sync function is unconditionally called in
> mtk_jpeg_release function, even for the variants that do not use the
> workqueue. This call generates a WARN_ON print in __flush_work because
> the workqueue callback function presence check fails in __flush_work
> function (used by cancel_work_sync).
> 
> So, to avoid these warnings, call cancel_work_sync only if a workqueue
> callback is defined in platform data.
> 
> Fixes: 34c519feef3e ("media: mtk-jpeg: fix use-after-free in release path due 
> to uncancelled work")
> Cc: [email protected]
> Signed-off-by: Louis-Alexis Eyraud <[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/jpeg/mtk_jpeg_core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c 
b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
index 8c684756d5fc..d147ec483081 100644
--- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
+++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
@@ -1202,7 +1202,8 @@ static int mtk_jpeg_release(struct file *file)
        struct mtk_jpeg_dev *jpeg = video_drvdata(file);
        struct mtk_jpeg_ctx *ctx = mtk_jpeg_file_to_ctx(file);
 
-       cancel_work_sync(&ctx->jpeg_work);
+       if (jpeg->variant->jpeg_worker)
+               cancel_work_sync(&ctx->jpeg_work);
        mutex_lock(&jpeg->lock);
        v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
        v4l2_ctrl_handler_free(&ctx->ctrl_hdl);
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to