[PATCH] media: hantro: Check whether reset op is defined before use

Marek Vasut marex at denx.de
Wed Aug 23 18:38:58 PDT 2023

The i.MX8MM/N/P does not define the .reset op since reset of the VPU is
done by genpd. Check whether the .reset op is defined before calling it
to avoid NULL pointer dereference.

Note that the Fixes tag is set to the commit which removed the reset op
from i.MX8M Hantro G2 implementation, this is because before this commit
all the implementations did define the .reset op.

Fixes: 6971efb70ac3 ("media: hantro: Allow i.MX8MQ G1 and G2 to run independently")
Signed-off-by: Marek Vasut <marex at denx.de>
Cc: Adam Ford <aford173 at gmail.com>
Cc: Benjamin Gaignard <benjamin.gaignard at collabora.com>
Cc: Ezequiel Garcia <ezequiel at vanguardiasur.com.ar>
Cc: Mauro Carvalho Chehab <mchehab at kernel.org>
Cc: Philipp Zabel <p.zabel at pengutronix.de>
Cc: linux-media at vger.kernel.org
Cc: linux-rockchip at lists.infradead.org
 drivers/media/platform/verisilicon/hantro_drv.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
index 423fc85d79ee3..50ec24c753e9e 100644
--- a/drivers/media/platform/verisilicon/hantro_drv.c
+++ b/drivers/media/platform/verisilicon/hantro_drv.c
@@ -125,7 +125,8 @@ void hantro_watchdog(struct work_struct *work)
 	ctx = v4l2_m2m_get_curr_priv(vpu->m2m_dev);
 	if (ctx) {
 		vpu_err("frame processing timed out!\n");
-		ctx->codec_ops->reset(ctx);
+		if (ctx->codec_ops->reset)
+			ctx->codec_ops->reset(ctx);
 		hantro_job_finish(vpu, ctx, VB2_BUF_STATE_ERROR);

More information about the Linux-rockchip mailing list