[PATCH] media: mediatek: vcodec: Free encoder controls when setup fails

Wentao Liang vulab at iscas.ac.cn
Tue Nov 3 00:35:33 PST 2026


mtk_vcodec_enc_ctrls_setup() can fail after creating some controls. On
that error, fops_vcodec_open() jumps past the control handler cleanup and
frees the context, leaking the handler's controls and allocation.

Use the same control handler cleanup as the later m2m context creation
failure, and remove the now-unused label. No m2m context is released on
this path because its initialization has not been attempted yet.

Fixes: 4e855a6efa54 ("[media] vcodec: mediatek: Add Mediatek V4L2 Video Encoder Driver")
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>
---
 .../platform/mediatek/vcodec/encoder/mtk_vcodec_enc_drv.c      | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc_drv.c b/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc_drv.c
index 4e4541b2fc8e..dd47feea6acd 100644
--- a/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc_drv.c
+++ b/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc_drv.c
@@ -140,7 +140,7 @@ static int fops_vcodec_open(struct file *file)
 	ret = mtk_vcodec_enc_ctrls_setup(ctx);
 	if (ret) {
 		mtk_v4l2_venc_err(ctx, "Failed to setup controls() (%d)", ret);
-		goto err_ctrls_setup;
+		goto err_m2m_ctx_init;
 	}
 	ctx->m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev_enc, ctx,
 					 &mtk_vcodec_enc_queue_init);
@@ -191,7 +191,6 @@ static int fops_vcodec_open(struct file *file)
 	v4l2_m2m_ctx_release(ctx->m2m_ctx);
 err_m2m_ctx_init:
 	v4l2_ctrl_handler_free(&ctx->ctrl_hdl);
-err_ctrls_setup:
 	v4l2_fh_del(&ctx->fh, file);
 	v4l2_fh_exit(&ctx->fh);
 	kfree(ctx);
-- 
2.34.1




More information about the linux-arm-kernel mailing list