[PATCH 3/6] media: verisilicon: hantro: bound G2 HEVC tile loop to the buffer capacity

From: Michael Bommarito

Date: Sun Jun 14 2026 - 09:13:17 EST


prepare_tile_info_buffer() writes one entry per tile into the tile_sizes
DMA buffer, sized for a grid equal to the PPS uAPI array capacity. Bound
the loop to that capacity so the writes stay inside the buffer.

Fixes: cb5dd5a0fa51 ("media: hantro: Introduce G2/HEVC decoder")
Signed-off-by: Michael Bommarito <michael.bommarito@xxxxxxxxx>
Assisted-by: Claude:claude-opus-4-8
---
This is an i.MX8M Hantro G2 SoC block not reachable on the x86 KUnit host,
so the driver-side out-of-bounds write is not reproduced here.

drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c b/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c
index e8c2e83..94fbd79 100644
--- a/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c
+++ b/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c
@@ -22,6 +22,12 @@ static void prepare_tile_info_buffer(struct hantro_ctx *ctx)
bool tiles_enabled, uniform_spacing;
u32 no_chroma = 0;

+ /* Bound the loops to the tile_sizes buffer capacity. */
+ num_tile_cols = min_t(unsigned int, num_tile_cols,
+ ARRAY_SIZE(pps->column_width_minus1));
+ num_tile_rows = min_t(unsigned int, num_tile_rows,
+ ARRAY_SIZE(pps->row_height_minus1));
+
tiles_enabled = !!(pps->flags & V4L2_HEVC_PPS_FLAG_TILES_ENABLED);
uniform_spacing = !!(pps->flags & V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING);

--
2.53.0