From: sashiko-bot@kernel.org
To: "Kyrie Wu" <kyrie.wu@mediatek.com>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org,
media-ci@linuxtv.org
Subject: Re: [PATCH v8 13/14] media: mediatek: decoder: fill av1 buffer size with picinfo
Date: Sat, 10 Oct 2026 08:57:33 +0000 [thread overview]
Message-ID: <sashiko-outbox-166382@kernel.org> (raw)
In-Reply-To: <f53ccdc0c8b07fbc4150ee3b0b52b4664c0cad94.1791619743.git.kyrie.wu@mediatek.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Critical] media: mtk-vcodec: OOB DMA write due to concurrent global picinfo mutation in stateless AV1 decoder
--
commit 4ecde7c3d617adc20b638103986012affff901df
Author: Kyrie Wu <kyrie.wu@mediatek.com>
media: mediatek: decoder: fill av1 buffer size with picinfo
This patch modifies the AV1 decoder to use the buffer sizes calculated
in the vcp/scp, filling each frame buffer size directly from picinfo
rather than computing it locally from the frame width and height.
> 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
> --- 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
[ ... ]
> @@ -1811,18 +1811,19 @@ static int vdec_av1_slice_setup_core_buffer(struct vdec_av1_slice_instance *inst
> {
[ ... ]
> /* frame buffer */
> vsi->fb.y.dma_addr = fb->base_y.dma_addr;
> +
> + vsi->fb.y.size = instance->ctx->picinfo.fb_sz[0];
> + vsi->fb.c.size = instance->ctx->picinfo.fb_sz[1];
> +
[Severity: Critical]
Does this introduce a race condition with concurrent requests?
The driver uses an asynchronous architecture where requests are processed
sequentially in the lat phase by mtk_vdec_worker, but core work is queued
and executed asynchronously.
If mtk_vdec_worker processes a new request, it synchronously updates the
global instance->ctx->picinfo to match the new sequence controls.
Concurrently, if the core worker processing the previous request executes
vdec_av1_slice_setup_core_buffer(), it will now read the mutated
instance->ctx->picinfo.fb_sz instead of the request-local dimension data.
> if (plane == 1)
> - vsi->fb.c.dma_addr = fb->base_y.dma_addr + size;
> + vsi->fb.c.dma_addr = fb->base_y.dma_addr + vsi->fb.y.size;
[Severity: Critical]
Can this regression lead to an out-of-bounds dma write?
If the subsequent request specifies a larger resolution, vsi->fb.y.size here
will be larger than the actually allocated vb2 capture buffer for the current
request.
Because this calculated c-plane dma address is not validated against the
physical capacity of the underlying vb2 buffer, the hardware could perform an
out-of-bounds write when it processes this offset. Userspace could potentially
trigger this by queuing sequential requests with different resolutions.
--
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1791619742.git.kyrie.wu@mediatek.com?part=13
next prev parent reply other threads:[~2026-10-10 8:57 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-10 8:35 [PATCH v8 00/14] media: mediatek: vcodec: support video decoder in mt8196 Kyrie Wu
2026-10-10 8:36 ` [PATCH v8 01/14] media: mediatek: vcodec: support vcp architecture Kyrie Wu
2026-10-10 8:36 ` [PATCH v8 02/14] media: mediatek: vcodec: add driver to support vcp Kyrie Wu
2026-10-10 8:53 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 03/14] media: mediatek: vcodec: add driver to support vcp encoder Kyrie Wu
2026-10-10 8:59 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 04/14] media: mediatek: vcodec: get different firmware ipi id Kyrie Wu
2026-10-10 8:56 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 05/14] media: mediatek: vcodec: get share memory address Kyrie Wu
2026-10-10 8:56 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 06/14] media: mediatek: vcodec: add debug information Kyrie Wu
2026-10-10 8:48 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 07/14] media: mediatek: vcodec: send share memory address to vcp Kyrie Wu
2026-10-10 8:46 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 08/14] dt-bindings: media: mediatek,vcodec-subdev-decoder: Add MT8196 Kyrie Wu
2026-10-12 9:39 ` Krzysztof Kozlowski
2026-10-12 9:39 ` Krzysztof Kozlowski
2026-10-10 8:36 ` [PATCH v8 09/14] media: mediatek: vcodec: add decoder compatible to support mt8196 Kyrie Wu
2026-10-10 8:36 ` [PATCH v8 10/14] media: mediatek: vcodec: define MT8196 vcodec levels Kyrie Wu
2026-10-10 8:36 ` [PATCH v8 11/14] media: mediatek: vcodec: support 36bit iova address Kyrie Wu
2026-10-10 8:36 ` [PATCH v8 12/14] media: mediatek: vcodec: clean xpc status Kyrie Wu
2026-10-10 8:50 ` sashiko-bot
2026-10-10 8:36 ` [PATCH v8 13/14] media: mediatek: decoder: fill av1 buffer size with picinfo Kyrie Wu
2026-10-10 8:57 ` sashiko-bot [this message]
2026-10-10 8:36 ` [PATCH v8 14/14] media: mediatek: decoder: support av1 extend vsi Kyrie Wu
2026-10-10 8:51 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-166382@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=kyrie.wu@mediatek.com \
--cc=media-ci@linuxtv.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.