diff options
author | 2025-05-01 15:55:48 -0400 | |
---|---|---|
committer | 2025-05-15 08:13:31 +0200 | |
commit | d43d7db3c8a1868dcbc6cb8de90a3cdf309d6cbb (patch) | |
tree | c7304154016966e77a2cf4ca635475b4b9074846 | |
parent | media: rkvdec: h264: Limit minimum profile to constrained baseline (diff) | |
download | linux-rng-d43d7db3c8a1868dcbc6cb8de90a3cdf309d6cbb.tar.xz linux-rng-d43d7db3c8a1868dcbc6cb8de90a3cdf309d6cbb.zip |
media: rkvdec: Initialize the m2m context before the controls
Setting up the control handler calls into .s_ctrl ops. While validating
the controls the ops may need to access some of the context state, which
could lead to a crash if not properly initialized.
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Diffstat (limited to '')
-rw-r--r-- | drivers/staging/media/rkvdec/rkvdec.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c index 65c6f1d07a49..7b780392bb6a 100644 --- a/drivers/staging/media/rkvdec/rkvdec.c +++ b/drivers/staging/media/rkvdec/rkvdec.c @@ -871,24 +871,24 @@ static int rkvdec_open(struct file *filp) rkvdec_reset_decoded_fmt(ctx); v4l2_fh_init(&ctx->fh, video_devdata(filp)); - ret = rkvdec_init_ctrls(ctx); - if (ret) - goto err_free_ctx; - ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(rkvdec->m2m_dev, ctx, rkvdec_queue_init); if (IS_ERR(ctx->fh.m2m_ctx)) { ret = PTR_ERR(ctx->fh.m2m_ctx); - goto err_cleanup_ctrls; + goto err_free_ctx; } + ret = rkvdec_init_ctrls(ctx); + if (ret) + goto err_cleanup_m2m_ctx; + filp->private_data = &ctx->fh; v4l2_fh_add(&ctx->fh); return 0; -err_cleanup_ctrls: - v4l2_ctrl_handler_free(&ctx->ctrl_hdl); +err_cleanup_m2m_ctx: + v4l2_m2m_ctx_release(ctx->fh.m2m_ctx); err_free_ctx: kfree(ctx); |