]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: hantro: Check whether reset op is defined before use
authorMarek Vasut <marex@denx.de>
Thu, 24 Aug 2023 01:38:58 +0000 (03:38 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:57:19 +0000 (11:57 +0100)
[ Upstream commit 88d4b23a629ebd34f682f770cb6c2116c851f7b8 ]

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@denx.de>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Tested-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Adam Ford <aford173@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/platform/verisilicon/hantro_drv.c

index c0a368bacf8803d9f2dac8b541c8634d48a1ab03..7299bcdd3bfa440a7d370c04824f14ace3f15629 100644 (file)
@@ -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);
        }
 }