Commit eb005c80 authored by Fei Shao's avatar Fei Shao Committed by Mauro Carvalho Chehab

media: mediatek: vcodec: Only free buffer VA that is not NULL

In the MediaTek vcodec driver, while mtk_vcodec_mem_free() is mostly
called only when the buffer to free exists, there are some instances
that didn't do the check and triggered warnings in practice.

We believe those checks were forgotten unintentionally. Add the checks
back to fix the warnings.
Signed-off-by: default avatarFei Shao <fshao@chromium.org>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@collabora.com>
Signed-off-by: default avatarSebastian Fricke <sebastian.fricke@collabora.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent f19a771a
...@@ -1023,18 +1023,26 @@ static void vdec_av1_slice_free_working_buffer(struct vdec_av1_slice_instance *i ...@@ -1023,18 +1023,26 @@ static void vdec_av1_slice_free_working_buffer(struct vdec_av1_slice_instance *i
int i; int i;
for (i = 0; i < ARRAY_SIZE(instance->mv); i++) for (i = 0; i < ARRAY_SIZE(instance->mv); i++)
mtk_vcodec_mem_free(ctx, &instance->mv[i]); if (instance->mv[i].va)
mtk_vcodec_mem_free(ctx, &instance->mv[i]);
for (i = 0; i < ARRAY_SIZE(instance->seg); i++) for (i = 0; i < ARRAY_SIZE(instance->seg); i++)
mtk_vcodec_mem_free(ctx, &instance->seg[i]); if (instance->seg[i].va)
mtk_vcodec_mem_free(ctx, &instance->seg[i]);
for (i = 0; i < ARRAY_SIZE(instance->cdf); i++) for (i = 0; i < ARRAY_SIZE(instance->cdf); i++)
mtk_vcodec_mem_free(ctx, &instance->cdf[i]); if (instance->cdf[i].va)
mtk_vcodec_mem_free(ctx, &instance->cdf[i]);
mtk_vcodec_mem_free(ctx, &instance->tile); if (instance->tile.va)
mtk_vcodec_mem_free(ctx, &instance->cdf_temp); mtk_vcodec_mem_free(ctx, &instance->tile);
mtk_vcodec_mem_free(ctx, &instance->cdf_table); if (instance->cdf_temp.va)
mtk_vcodec_mem_free(ctx, &instance->iq_table); mtk_vcodec_mem_free(ctx, &instance->cdf_temp);
if (instance->cdf_table.va)
mtk_vcodec_mem_free(ctx, &instance->cdf_table);
if (instance->iq_table.va)
mtk_vcodec_mem_free(ctx, &instance->iq_table);
instance->level = AV1_RES_NONE; instance->level = AV1_RES_NONE;
} }
......
...@@ -301,11 +301,12 @@ static void h264_enc_free_work_buf(struct venc_h264_inst *inst) ...@@ -301,11 +301,12 @@ static void h264_enc_free_work_buf(struct venc_h264_inst *inst)
* other buffers need to be freed by AP. * other buffers need to be freed by AP.
*/ */
for (i = 0; i < VENC_H264_VPU_WORK_BUF_MAX; i++) { for (i = 0; i < VENC_H264_VPU_WORK_BUF_MAX; i++) {
if (i != VENC_H264_VPU_WORK_BUF_SKIP_FRAME) if (i != VENC_H264_VPU_WORK_BUF_SKIP_FRAME && inst->work_bufs[i].va)
mtk_vcodec_mem_free(inst->ctx, &inst->work_bufs[i]); mtk_vcodec_mem_free(inst->ctx, &inst->work_bufs[i]);
} }
mtk_vcodec_mem_free(inst->ctx, &inst->pps_buf); if (inst->pps_buf.va)
mtk_vcodec_mem_free(inst->ctx, &inst->pps_buf);
} }
static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst, bool is_34bit) static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst, bool is_34bit)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment