media: coda: fix macroblocks count control usage
authorMarco Felsch <m.felsch@pengutronix.de>
Fri, 5 Mar 2021 08:23:54 +0000 (09:23 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 15 Apr 2021 11:23:26 +0000 (13:23 +0200)
Commit b2d3bef1aa78 ("media: coda: Add a V4L2 user for control error
macroblocks count") add the control for the decoder devices. But
during streamon() this ioctl gets called for all (encoder and decoder)
devices and on encoder devices this causes a null pointer exception.

Fix this by setting the control only if it is really accessible.

Fixes: b2d3bef1aa78 ("media: coda: Add a V4L2 user for control error macroblocks count")
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Cc: <stable@vger.kernel.org>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/coda/coda-common.c

index ccb4d3f4804ee974451ca9d66fddb6abb4b12cf9..bd666c858fa10d068abb81790a86b940e78ed1a4 100644 (file)
@@ -2062,7 +2062,9 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
        if (q_data_dst->fourcc == V4L2_PIX_FMT_JPEG)
                ctx->params.gop_size = 1;
        ctx->gopcounter = ctx->params.gop_size - 1;
-       v4l2_ctrl_s_ctrl(ctx->mb_err_cnt_ctrl, 0);
+       /* Only decoders have this control */
+       if (ctx->mb_err_cnt_ctrl)
+               v4l2_ctrl_s_ctrl(ctx->mb_err_cnt_ctrl, 0);
 
        ret = ctx->ops->start_streaming(ctx);
        if (ctx->inst_type == CODA_INST_DECODER) {