This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: mediatek: vcodec: Only free buffer VA that is not NULL
Author:  Fei Shao <fs...@chromium.org>
Date:    Thu Dec 21 09:17:46 2023 +0000

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: Fei Shao <fs...@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno 
<angelogioacchino.delre...@collabora.com>
Signed-off-by: Andrzej Pietrasiewicz <andrze...@collabora.com>
Signed-off-by: Sebastian Fricke <sebastian.fri...@collabora.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@kernel.org>

 .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c      | 22 +++++++++++++++-------
 .../mediatek/vcodec/encoder/venc/venc_h264_if.c    |  5 +++--
 2 files changed, 18 insertions(+), 9 deletions(-)

---

diff --git 
a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c 
b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
index a081e12d67d6..bf21f2467a0f 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
@@ -1023,18 +1023,26 @@ static void vdec_av1_slice_free_working_buffer(struct 
vdec_av1_slice_instance *i
        int 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++)
-               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++)
-               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);
-       mtk_vcodec_mem_free(ctx, &instance->cdf_temp);
-       mtk_vcodec_mem_free(ctx, &instance->cdf_table);
-       mtk_vcodec_mem_free(ctx, &instance->iq_table);
+       if (instance->tile.va)
+               mtk_vcodec_mem_free(ctx, &instance->tile);
+       if (instance->cdf_temp.va)
+               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;
 }
diff --git a/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c 
b/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c
index a68dac72c4e4..f8145998fcaf 100644
--- a/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c
+++ b/drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c
@@ -301,11 +301,12 @@ static void h264_enc_free_work_buf(struct venc_h264_inst 
*inst)
         * other buffers need to be freed by AP.
         */
        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->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)

Reply via email to