This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: mtk-jpeg: Fix timeout schedule error in mtk_jpegdec_worker.
Author:  Zheng Wang <zyytlz...@163.com>
Date:    Mon Nov 6 15:48:11 2023 +0100

In mtk_jpegdec_worker, if error occurs in mtk_jpeg_set_dec_dst, it
will start the timeout worker and invoke v4l2_m2m_job_finish at
the same time. This will break the logic of design for there should
be only one function to call v4l2_m2m_job_finish. But now the timeout
handler and mtk_jpegdec_worker will both invoke it.

Fix it by start the worker only if mtk_jpeg_set_dec_dst successfully
finished.

Fixes: da4ede4b7fd6 ("media: mtk-jpeg: move data/code inside CONFIG_OF blocks")
Signed-off-by: Zheng Wang <zyytlz...@163.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipe...@collabora.com>
Cc: sta...@vger.kernel.org
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mche...@kernel.org>

 drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

---

diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c 
b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
index 63165f05e123..ac48658e2de4 100644
--- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
+++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
@@ -1748,9 +1748,6 @@ retry_select:
        v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
        v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
 
-       schedule_delayed_work(&comp_jpeg[hw_id]->job_timeout_work,
-                             msecs_to_jiffies(MTK_JPEG_HW_TIMEOUT_MSEC));
-
        mtk_jpeg_set_dec_src(ctx, &src_buf->vb2_buf, &bs);
        if (mtk_jpeg_set_dec_dst(ctx,
                                 &jpeg_src_buf->dec_param,
@@ -1760,6 +1757,9 @@ retry_select:
                goto setdst_end;
        }
 
+       schedule_delayed_work(&comp_jpeg[hw_id]->job_timeout_work,
+                             msecs_to_jiffies(MTK_JPEG_HW_TIMEOUT_MSEC));
+
        spin_lock_irqsave(&comp_jpeg[hw_id]->hw_lock, flags);
        ctx->total_frame_num++;
        mtk_jpeg_dec_reset(comp_jpeg[hw_id]->reg_base);

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to