mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 0/3] media: mediatek: vcodec: fix vcodec smatch warning
@ 2024-06-13  9:33 Yunfei Dong
  2024-06-13  9:33 ` [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder " Yunfei Dong
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Yunfei Dong @ 2024-06-13  9:33 UTC (permalink / raw)
  To: Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, AngeloGioacchino Del Regno,
	Benjamin Gaignard, Nathan Hebert, Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	Yunfei Dong, linux-media, devicetree, linux-kernel,
	linux-arm-kernel, linux-mediatek,
	Project_Global_Chrome_Upstream_Group

Fix below smatch static checker warning from [bug report]:

The patch 397edc703a10: "media: mediatek: vcodec: add h264 decoder
driver for mt8186" from May 12, 2022 (linux-next), leads to the
following (in development) Smatch static checker warning:

drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c:351
vdec_h264_slice_decode() potential NULL container_of 'fb'

drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c:337
vdec_vp8_slice_decode() potential NULL container_of 'fb'

drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_multi_if.c:728
vdec_h264_slice_single_decode() potential NULL container_of 'fb'

---
Changed with v1:
- Change the return value from -EBUSY to -ENOMEM when the driver can't get
  frame buffer.
---
Yunfei Dong (3):
  media: mediatek: vcodec: fix h264 multi statless decoder smatch
    warning
  media: mediatek: vcodec: fix vp8 stateless decoder smatch warning
  media: mediatek: vcodec: fix h264 stateless decoder smatch warning

 .../mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c    |  9 +++++++--
 .../vcodec/decoder/vdec/vdec_h264_req_multi_if.c       |  9 +++++++--
 .../mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c     | 10 +++++++---
 3 files changed, 21 insertions(+), 7 deletions(-)

-- 
2.18.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder smatch warning
  2024-06-13  9:33 [PATCH v2 0/3] media: mediatek: vcodec: fix vcodec smatch warning Yunfei Dong
@ 2024-06-13  9:33 ` Yunfei Dong
  2024-08-01  8:14   ` AngeloGioacchino Del Regno
  2024-06-13  9:33 ` [PATCH v2 2/3] media: mediatek: vcodec: fix vp8 stateless " Yunfei Dong
  2024-06-13  9:33 ` [PATCH v2 3/3] media: mediatek: vcodec: fix h264 " Yunfei Dong
  2 siblings, 1 reply; 7+ messages in thread
From: Yunfei Dong @ 2024-06-13  9:33 UTC (permalink / raw)
  To: Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, AngeloGioacchino Del Regno,
	Benjamin Gaignard, Nathan Hebert, Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	Yunfei Dong, linux-media, devicetree, linux-kernel,
	linux-arm-kernel, linux-mediatek,
	Project_Global_Chrome_Upstream_Group

Fix smatch static checker warning for vdec_h264_req_multi_if.c.
Leading to kernel crash when fb is NULL.

Fixes: 397edc703a10 ("media: mediatek: vcodec: add h264 decoder")
Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
---
 .../vcodec/decoder/vdec/vdec_h264_req_multi_if.c         | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_multi_if.c
index 2d4611e7fa0b..1ed0ccec5665 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_multi_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_multi_if.c
@@ -724,11 +724,16 @@ static int vdec_h264_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bs
 		return vpu_dec_reset(vpu);
 
 	fb = inst->ctx->dev->vdec_pdata->get_cap_buffer(inst->ctx);
+	if (!fb) {
+		mtk_vdec_err(inst->ctx, "fb buffer is NULL");
+		return -ENOMEM;
+	}
+
 	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
 	dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer);
 
-	y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0;
-	c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0;
+	y_fb_dma = fb->base_y.dma_addr;
+	c_fb_dma = fb->base_c.dma_addr;
 	mtk_vdec_debug(inst->ctx, "[h264-dec] [%d] y_dma=%llx c_dma=%llx",
 		       inst->ctx->decoded_frame_cnt, y_fb_dma, c_fb_dma);
 
-- 
2.18.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 2/3] media: mediatek: vcodec: fix vp8 stateless decoder smatch warning
  2024-06-13  9:33 [PATCH v2 0/3] media: mediatek: vcodec: fix vcodec smatch warning Yunfei Dong
  2024-06-13  9:33 ` [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder " Yunfei Dong
@ 2024-06-13  9:33 ` Yunfei Dong
  2024-08-01  8:14   ` AngeloGioacchino Del Regno
  2024-06-13  9:33 ` [PATCH v2 3/3] media: mediatek: vcodec: fix h264 " Yunfei Dong
  2 siblings, 1 reply; 7+ messages in thread
From: Yunfei Dong @ 2024-06-13  9:33 UTC (permalink / raw)
  To: Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, AngeloGioacchino Del Regno,
	Benjamin Gaignard, Nathan Hebert, Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	Yunfei Dong, linux-media, devicetree, linux-kernel,
	linux-arm-kernel, linux-mediatek,
	Project_Global_Chrome_Upstream_Group

Fix smatch static checker warning for vdec_vp8_req_if.c. Leading
to kernel crash when fb is NULL.

Fixes: 7a7ae26fd458 ("media: mediatek: vcodec: support stateless VP8 decoding")
Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
---
 .../mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c
index e27e728f392e..232ef3bd246a 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp8_req_if.c
@@ -334,14 +334,18 @@ static int vdec_vp8_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
 	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
 
 	fb = inst->ctx->dev->vdec_pdata->get_cap_buffer(inst->ctx);
-	dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer);
+	if (!fb) {
+		mtk_vdec_err(inst->ctx, "fb buffer is NULL");
+		return -ENOMEM;
+	}
 
-	y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0;
+	dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer);
+	y_fb_dma = fb->base_y.dma_addr;
 	if (inst->ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes == 1)
 		c_fb_dma = y_fb_dma +
 			inst->ctx->picinfo.buf_w * inst->ctx->picinfo.buf_h;
 	else
-		c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0;
+		c_fb_dma = fb->base_c.dma_addr;
 
 	inst->vsi->dec.bs_dma = (u64)bs->dma_addr;
 	inst->vsi->dec.bs_sz = bs->size;
-- 
2.18.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 3/3] media: mediatek: vcodec: fix h264 stateless decoder smatch warning
  2024-06-13  9:33 [PATCH v2 0/3] media: mediatek: vcodec: fix vcodec smatch warning Yunfei Dong
  2024-06-13  9:33 ` [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder " Yunfei Dong
  2024-06-13  9:33 ` [PATCH v2 2/3] media: mediatek: vcodec: fix vp8 stateless " Yunfei Dong
@ 2024-06-13  9:33 ` Yunfei Dong
  2024-08-01  8:14   ` AngeloGioacchino Del Regno
  2 siblings, 1 reply; 7+ messages in thread
From: Yunfei Dong @ 2024-06-13  9:33 UTC (permalink / raw)
  To: Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, AngeloGioacchino Del Regno,
	Benjamin Gaignard, Nathan Hebert, Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	Yunfei Dong, linux-media, devicetree, linux-kernel,
	linux-arm-kernel, linux-mediatek,
	Project_Global_Chrome_Upstream_Group

Fix smatch static checker warning for vdec_h264_req_if.c. Leading
to kernel crash when fb is NULL.

Fixes: 06fa5f757dc5 ("media: mtk-vcodec: vdec: support stateless H.264 decoding")
Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
---
 .../mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c      | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c
index 73d5cef33b2a..1e1b32faac77 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_h264_req_if.c
@@ -347,11 +347,16 @@ static int vdec_h264_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
 		return vpu_dec_reset(vpu);
 
 	fb = inst->ctx->dev->vdec_pdata->get_cap_buffer(inst->ctx);
+	if (!fb) {
+		mtk_vdec_err(inst->ctx, "fb buffer is NULL");
+		return -ENOMEM;
+	}
+
 	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
 	dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer);
 
-	y_fb_dma = fb ? (u64)fb->base_y.dma_addr : 0;
-	c_fb_dma = fb ? (u64)fb->base_c.dma_addr : 0;
+	y_fb_dma = fb->base_y.dma_addr;
+	c_fb_dma = fb->base_c.dma_addr;
 
 	mtk_vdec_debug(inst->ctx, "+ [%d] FB y_dma=%llx c_dma=%llx va=%p",
 		       inst->num_nalu, y_fb_dma, c_fb_dma, fb);
-- 
2.18.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/3] media: mediatek: vcodec: fix vp8 stateless decoder smatch warning
  2024-06-13  9:33 ` [PATCH v2 2/3] media: mediatek: vcodec: fix vp8 stateless " Yunfei Dong
@ 2024-08-01  8:14   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 7+ messages in thread
From: AngeloGioacchino Del Regno @ 2024-08-01  8:14 UTC (permalink / raw)
  To: Yunfei Dong, Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, Benjamin Gaignard, Nathan Hebert,
	Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	linux-media, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, Project_Global_Chrome_Upstream_Group

Il 13/06/24 11:33, Yunfei Dong ha scritto:
> Fix smatch static checker warning for vdec_vp8_req_if.c. Leading
> to kernel crash when fb is NULL.
> 
> Fixes: 7a7ae26fd458 ("media: mediatek: vcodec: support stateless VP8 decoding")
> Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder smatch warning
  2024-06-13  9:33 ` [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder " Yunfei Dong
@ 2024-08-01  8:14   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 7+ messages in thread
From: AngeloGioacchino Del Regno @ 2024-08-01  8:14 UTC (permalink / raw)
  To: Yunfei Dong, Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, Benjamin Gaignard, Nathan Hebert,
	Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	linux-media, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, Project_Global_Chrome_Upstream_Group

Il 13/06/24 11:33, Yunfei Dong ha scritto:
> Fix smatch static checker warning for vdec_h264_req_multi_if.c.
> Leading to kernel crash when fb is NULL.
> 
> Fixes: 397edc703a10 ("media: mediatek: vcodec: add h264 decoder")
> Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 3/3] media: mediatek: vcodec: fix h264 stateless decoder smatch warning
  2024-06-13  9:33 ` [PATCH v2 3/3] media: mediatek: vcodec: fix h264 " Yunfei Dong
@ 2024-08-01  8:14   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 7+ messages in thread
From: AngeloGioacchino Del Regno @ 2024-08-01  8:14 UTC (permalink / raw)
  To: Yunfei Dong, Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, Benjamin Gaignard, Nathan Hebert,
	Andrzej Pietrasiewicz
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho,
	linux-media, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, Project_Global_Chrome_Upstream_Group

Il 13/06/24 11:33, Yunfei Dong ha scritto:
> Fix smatch static checker warning for vdec_h264_req_if.c. Leading
> to kernel crash when fb is NULL.
> 
> Fixes: 06fa5f757dc5 ("media: mtk-vcodec: vdec: support stateless H.264 decoding")
> Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-08-01  8:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-13  9:33 [PATCH v2 0/3] media: mediatek: vcodec: fix vcodec smatch warning Yunfei Dong
2024-06-13  9:33 ` [PATCH v2 1/3] media: mediatek: vcodec: fix h264 multi statless decoder " Yunfei Dong
2024-08-01  8:14   ` AngeloGioacchino Del Regno
2024-06-13  9:33 ` [PATCH v2 2/3] media: mediatek: vcodec: fix vp8 stateless " Yunfei Dong
2024-08-01  8:14   ` AngeloGioacchino Del Regno
2024-06-13  9:33 ` [PATCH v2 3/3] media: mediatek: vcodec: fix h264 " Yunfei Dong
2024-08-01  8:14   ` AngeloGioacchino Del Regno

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®