On Tue, May 19, 2026 at 1:21 PM <[email protected]> wrote: > > From: Boyuan Zhang <[email protected]> > > When width or height is less than 16, width_in_mb or height_in_mb > becomes 0, leading to fs_in_mb being 0. This causes a division by > zero when calculating num_dpb_buffer in H264 and H264 Perf decode > paths. > > Add validation to reject frames with width < 16 or height < 16 > before performing any calculations that depend on these values. > > V2: Format change - move up all vaiable definitions. > > Signed-off-by: Boyuan Zhang <[email protected]> > Reviewed-by: Leo Liu <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c > index 3a3bc0d370fa..707e9d9441ce 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c > @@ -635,6 +635,13 @@ static int amdgpu_uvd_cs_msg_decode(struct amdgpu_device > *adev, uint32_t *msg, > unsigned int image_size, tmp, min_dpb_size, num_dpb_buffer; > unsigned int min_ctx_size = ~0; > > + /* Reject invalid dimensions to prevent division by zero */ > + if (width < 16 || height < 16) { > + DRM_ERROR("Invalid UVD decoding dimensions (%dx%d)!\n", > + width, height);
I'd drop the message or make it warn_once. Otherwise you can spam the log. With that fixed: Reviewed-by: Alex Deucher <[email protected]> Alex > + return -EINVAL; > + } > + > image_size = width * height; > image_size += image_size / 2; > image_size = ALIGN(image_size, 1024); > -- > 2.43.0 >
