Re: [PATCH 2/2] media: mediatek: vcodec: Handle encoder vsi NULL pointer case
From: Irui Wang (王瑞) <hidden>
Date: 2023-10-07 06:17:49
Also in:
linux-devicetree, linux-media, linux-mediatek, lkml
Dear Angelo, Hans, Thanks for your reviewing. I will send patch v2 with Fix tag... .... On Thu, 2023-10-05 at 10:43 +0200, Hans Verkuil wrote:
External email : Please do not click links or open attachments until you have verified the sender or the content. On 26/09/2023 12:19, Irui Wang wrote:quoted
There will be a kernel null pointer exception if 'vsi' is NULL,checkquoted
'vsi' is not NULL before assign it to encoder instance. Signed-off-by: Irui Wang <redacted> --- .../platform/mediatek/vcodec/encoder/venc/venc_h264_if.c | 5+++++quoted
.../platform/mediatek/vcodec/encoder/venc/venc_vp8_if.c | 5+++++quoted
2 files changed, 10 insertions(+) diff --gita/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c b/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.cquoted
index a68dac72c4e4..385bcc0d14f3 100644 ---a/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.cquoted
+++b/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.cquoted
@@ -597,6 +597,11 @@ static int h264_enc_init(structmtk_vcodec_enc_ctx *ctx)quoted
inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base,VENC_SYS);quoted
ret = vpu_enc_init(&inst->vpu_inst); +if (!inst->vpu_inst.vsi) { +mtk_venc_err(ctx, "share buffer is NULL"); +kfree(inst); +return -EFAULT; +}Shouldn't this check be done in vpu_enc_init? It looks weird that a function can return 0, but there is still an error that needs to be checked manually afterwards. Regards, Hans
Also, this check will move into vpu_enc_init. Best Regards
quoted
if (MTK_ENC_IOVA_IS_34BIT(ctx)) inst->vsi_34 = (struct venc_h264_vsi_34 *)inst->vpu_inst.vsi; diff --gita/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_vp8_if.c b/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_vp8_if.cquoted
index 05abca91e742..23ca0d93324f 100644 ---a/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_vp8_if.cquoted
+++b/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_vp8_if.cquoted
@@ -326,6 +326,11 @@ static int vp8_enc_init(structmtk_vcodec_enc_ctx *ctx)quoted
inst->hw_base = mtk_vcodec_get_reg_addr(inst->ctx->dev->reg_base,VENC_LT_SYS);quoted
ret = vpu_enc_init(&inst->vpu_inst); +if (!inst->vpu_inst.vsi) { +mtk_venc_err(ctx, "share buffer is NULL"); +kfree(inst); +return -EFAULT; +} inst->vsi = (struct venc_vp8_vsi *)inst->vpu_inst.vsi;
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel