[PATCH] media: mtk-jpeg: Release the encoder device on job completion
Wentao Liang
vulab at iscas.ac.cn
Tue Nov 3 01:46:13 PST 2026
mtk_jpegenc_worker() resumes the component device represented by
comp_jpeg[hw_id]->dev. When the job completes,
mtk_jpegenc_hw_irq_handler() drops a reference to the master device
ctx->jpeg->dev instead of the component device. The component's usage
counter is never decremented, so the component and its power domain stay
powered, while the master's usage counter is decremented without a
matching reference.
Release jpeg->dev, the component device that was resumed, and disable
the clock before dropping the reference as the timeout work already
does.
Fixes: 934e8bccac95 ("mtk-jpegenc: support jpegenc multi-hardware")
Cc: stable at vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab at iscas.ac.cn>
---
drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
index b312a15d707b..266bfff604db 100644
--- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
+++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_enc_hw.c
@@ -303,8 +303,8 @@ static irqreturn_t mtk_jpegenc_hw_irq_handler(int irq, void *priv)
buf_state = VB2_BUF_STATE_DONE;
v4l2_m2m_buf_done(src_buf, buf_state);
mtk_jpegenc_put_buf(jpeg);
- pm_runtime_put(ctx->jpeg->dev);
clk_disable_unprepare(jpeg->venc_clk.clks->clk);
+ pm_runtime_put(jpeg->dev);
jpeg->hw_state = MTK_JPEG_HW_IDLE;
wake_up(&master_jpeg->hw_wq);
--
2.34.1
More information about the linux-arm-kernel
mailing list