From e4f63453fd37d79501676c6f32790179909b5042 Mon Sep 17 00:00:00 2001 From: Qianfeng Rong Date: Sun, 7 Sep 2025 17:35:57 +0800 Subject: [PATCH] media: mediatek: vcodec: use = { } instead of memset() Based on testing and recommendations by David Lechner et al. [1][2], using = { } to initialize a structure or array is the preferred way to do this in the kernel. Converts memset() to = { }, thereby: - Eliminating the risk of sizeof() mismatches. - Simplifying the code. [1]: https://lore.kernel.org/linux-iio/202505090942.48EBF01B@keescook/ [2]: https://lore.kernel.org/lkml/20250614151844.50524610@jic23-huawei/ Signed-off-by: Qianfeng Rong Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Nicolas Dufresne Signed-off-by: Hans Verkuil --- .../mediatek/vcodec/decoder/vdec/vdec_vp9_if.c | 3 +-- .../mediatek/vcodec/decoder/vdec_vpu_if.c | 12 ++++-------- .../mediatek/vcodec/encoder/mtk_vcodec_enc.c | 6 ++---- .../mediatek/vcodec/encoder/venc_vpu_if.c | 15 +++++---------- 4 files changed, 12 insertions(+), 24 deletions(-) diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_if.c index eb3354192853f..80554b2c26c06 100644 --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_if.c +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_if.c @@ -548,10 +548,9 @@ static bool vp9_wait_dec_end(struct vdec_vp9_inst *inst) static struct vdec_vp9_inst *vp9_alloc_inst(struct mtk_vcodec_dec_ctx *ctx) { int result; - struct mtk_vcodec_mem mem; + struct mtk_vcodec_mem mem = { }; struct vdec_vp9_inst *inst; - memset(&mem, 0, sizeof(mem)); mem.size = sizeof(struct vdec_vp9_inst); result = mtk_vcodec_mem_alloc(ctx, &mem); if (result) diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec_vpu_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec_vpu_if.c index 40b97f114cf6f..b35759a0b3533 100644 --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec_vpu_if.c +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec_vpu_if.c @@ -182,12 +182,11 @@ static int vcodec_vpu_send_msg(struct vdec_vpu_inst *vpu, void *msg, int len) static int vcodec_send_ap_ipi(struct vdec_vpu_inst *vpu, unsigned int msg_id) { - struct vdec_ap_ipi_cmd msg; + struct vdec_ap_ipi_cmd msg = { }; int err = 0; mtk_vdec_debug(vpu->ctx, "+ id=%X", msg_id); - memset(&msg, 0, sizeof(msg)); msg.msg_id = msg_id; if (vpu->fw_abi_version < 2) msg.vpu_inst_addr = vpu->inst_addr; @@ -202,7 +201,7 @@ static int vcodec_send_ap_ipi(struct vdec_vpu_inst *vpu, unsigned int msg_id) int vpu_dec_init(struct vdec_vpu_inst *vpu) { - struct vdec_ap_ipi_init msg; + struct vdec_ap_ipi_init msg = { }; int err; init_waitqueue_head(&vpu->wq); @@ -226,7 +225,6 @@ int vpu_dec_init(struct vdec_vpu_inst *vpu) } } - memset(&msg, 0, sizeof(msg)); msg.msg_id = AP_IPIMSG_DEC_INIT; msg.ap_inst_addr = (unsigned long)vpu; msg.codec_type = vpu->codec_type; @@ -246,7 +244,7 @@ int vpu_dec_init(struct vdec_vpu_inst *vpu) int vpu_dec_start(struct vdec_vpu_inst *vpu, uint32_t *data, unsigned int len) { - struct vdec_ap_ipi_dec_start msg; + struct vdec_ap_ipi_dec_start msg = { }; int i; int err = 0; @@ -255,7 +253,6 @@ int vpu_dec_start(struct vdec_vpu_inst *vpu, uint32_t *data, unsigned int len) return -EINVAL; } - memset(&msg, 0, sizeof(msg)); msg.msg_id = AP_IPIMSG_DEC_START; if (vpu->fw_abi_version < 2) msg.vpu_inst_addr = vpu->inst_addr; @@ -274,7 +271,7 @@ int vpu_dec_start(struct vdec_vpu_inst *vpu, uint32_t *data, unsigned int len) int vpu_dec_get_param(struct vdec_vpu_inst *vpu, uint32_t *data, unsigned int len, unsigned int param_type) { - struct vdec_ap_ipi_get_param msg; + struct vdec_ap_ipi_get_param msg = { }; int err; if (len > ARRAY_SIZE(msg.data)) { @@ -282,7 +279,6 @@ int vpu_dec_get_param(struct vdec_vpu_inst *vpu, uint32_t *data, return -EINVAL; } - memset(&msg, 0, sizeof(msg)); msg.msg_id = AP_IPIMSG_DEC_GET_PARAM; msg.inst_id = vpu->inst_id; memcpy(msg.data, data, sizeof(unsigned int) * len); diff --git a/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc.c b/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc.c index b3a0a1d8b7a8e..0d4e944636852 100644 --- a/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc.c +++ b/drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc.c @@ -1049,7 +1049,7 @@ static int mtk_venc_encode_header(void *priv) static int mtk_venc_param_change(struct mtk_vcodec_enc_ctx *ctx) { - struct venc_enc_param enc_prm; + struct venc_enc_param enc_prm = { }; struct vb2_v4l2_buffer *vb2_v4l2 = v4l2_m2m_next_src_buf(ctx->m2m_ctx); struct mtk_video_enc_buf *mtk_buf; int ret = 0; @@ -1060,7 +1060,6 @@ static int mtk_venc_param_change(struct mtk_vcodec_enc_ctx *ctx) mtk_buf = container_of(vb2_v4l2, struct mtk_video_enc_buf, m2m_buf.vb); - memset(&enc_prm, 0, sizeof(enc_prm)); if (mtk_buf->param_change == MTK_ENCODE_PARAM_NONE) return 0; @@ -1123,7 +1122,7 @@ static void mtk_venc_worker(struct work_struct *work) struct mtk_vcodec_enc_ctx *ctx = container_of(work, struct mtk_vcodec_enc_ctx, encode_work); struct vb2_v4l2_buffer *src_buf, *dst_buf; - struct venc_frm_buf frm_buf; + struct venc_frm_buf frm_buf = { }; struct mtk_vcodec_mem bs_buf; struct venc_done_result enc_result = { }; int ret, i; @@ -1153,7 +1152,6 @@ static void mtk_venc_worker(struct work_struct *work) return; } - memset(&frm_buf, 0, sizeof(frm_buf)); for (i = 0; i < src_buf->vb2_buf.num_planes ; i++) { frm_buf.fb_addr[i].dma_addr = vb2_dma_contig_plane_dma_addr(&src_buf->vb2_buf, i); diff --git a/drivers/media/platform/mediatek/vcodec/encoder/venc_vpu_if.c b/drivers/media/platform/mediatek/vcodec/encoder/venc_vpu_if.c index 3c229b1f6b21f..0c825aa7224de 100644 --- a/drivers/media/platform/mediatek/vcodec/encoder/venc_vpu_if.c +++ b/drivers/media/platform/mediatek/vcodec/encoder/venc_vpu_if.c @@ -133,7 +133,7 @@ static int vpu_enc_send_msg(struct venc_vpu_inst *vpu, void *msg, int vpu_enc_init(struct venc_vpu_inst *vpu) { int status; - struct venc_ap_ipi_msg_init out; + struct venc_ap_ipi_msg_init out = { }; init_waitqueue_head(&vpu->wq_hd); vpu->signaled = 0; @@ -149,7 +149,6 @@ int vpu_enc_init(struct venc_vpu_inst *vpu) return -EINVAL; } - memset(&out, 0, sizeof(out)); out.msg_id = AP_IPIMSG_ENC_INIT; out.venc_inst = (unsigned long)vpu; if (vpu_enc_send_msg(vpu, &out, sizeof(out))) { @@ -192,11 +191,10 @@ int vpu_enc_set_param(struct venc_vpu_inst *vpu, size_t msg_size = is_ext ? sizeof(struct venc_ap_ipi_msg_set_param_ext) : sizeof(struct venc_ap_ipi_msg_set_param); - struct venc_ap_ipi_msg_set_param_ext out; + struct venc_ap_ipi_msg_set_param_ext out = { }; mtk_venc_debug(vpu->ctx, "id %d ->", id); - memset(&out, 0, sizeof(out)); out.base.msg_id = AP_IPIMSG_ENC_SET_PARAM; out.base.vpu_inst_addr = vpu->inst_addr; out.base.param_id = id; @@ -259,11 +257,10 @@ static int vpu_enc_encode_32bits(struct venc_vpu_inst *vpu, size_t msg_size = is_ext ? sizeof(struct venc_ap_ipi_msg_enc_ext) : sizeof(struct venc_ap_ipi_msg_enc); - struct venc_ap_ipi_msg_enc_ext out; + struct venc_ap_ipi_msg_enc_ext out = { }; mtk_venc_debug(vpu->ctx, "bs_mode %d ->", bs_mode); - memset(&out, 0, sizeof(out)); out.base.msg_id = AP_IPIMSG_ENC_ENCODE; out.base.vpu_inst_addr = vpu->inst_addr; out.base.bs_mode = bs_mode; @@ -303,12 +300,11 @@ static int vpu_enc_encode_34bits(struct venc_vpu_inst *vpu, struct mtk_vcodec_mem *bs_buf, struct venc_frame_info *frame_info) { - struct venc_ap_ipi_msg_enc_ext_34 out; + struct venc_ap_ipi_msg_enc_ext_34 out = { }; size_t msg_size = sizeof(struct venc_ap_ipi_msg_enc_ext_34); mtk_venc_debug(vpu->ctx, "bs_mode %d ->", bs_mode); - memset(&out, 0, sizeof(out)); out.msg_id = AP_IPIMSG_ENC_ENCODE; out.vpu_inst_addr = vpu->inst_addr; out.bs_mode = bs_mode; @@ -368,9 +364,8 @@ int vpu_enc_encode(struct venc_vpu_inst *vpu, unsigned int bs_mode, int vpu_enc_deinit(struct venc_vpu_inst *vpu) { - struct venc_ap_ipi_msg_deinit out; + struct venc_ap_ipi_msg_deinit out = { }; - memset(&out, 0, sizeof(out)); out.msg_id = AP_IPIMSG_ENC_DEINIT; out.vpu_inst_addr = vpu->inst_addr; if (vpu_enc_send_msg(vpu, &out, sizeof(out))) { -- 2.47.3