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
>

Reply via email to