[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <f782159b-ad3f-4d0c-8476-50a701bf29e6@amd.com>
Date: Wed, 17 Sep 2025 14:25:23 -0400
From: "Kuehling, Felix" <felix.kuehling@....com>
To: Rahul Kumar <rk0006818@...il.com>, alexander.deucher@....com,
christian.koenig@....com, airlied@...il.com, simona@...ll.ch,
amd-gfx@...ts.freedesktop.org, dri-devel@...ts.freedesktop.org
Cc: linux-kernel@...r.kernel.org, linux-kernel-mentees@...ts.linux.dev,
skhan@...uxfoundation.org
Subject: Re: [PATCH] drm/amdgpu: Use kmalloc_array() instead of kmalloc()
On 2025-09-16 05:29, Rahul Kumar wrote:
> Documentation/process/deprecated.rst recommends against the use of
> kmalloc with dynamic size calculations due to the risk of overflow and
> smaller allocation being made than the caller was expecting.
>
> Replace kmalloc() with kmalloc_array() in amdgpu_amdkfd_gfx_v10.c
> to make the intended allocation size clearer and avoid potential
> overflow issues.
>
> Signed-off-by: Rahul Kumar <rk0006818@...il.com>
The patch looks good to me. Looks like this got fixed in GFX9 and older
but that didn't make it into GFX10 and newer implementations that were
probably on some internal branch at the time. For the sake of
completeness and consistency the same fix should be applied to
amdgpu_amdkfd_gfx_v10_3.c, amdgpu_amdkfd_gfx_v11.c and
amdgpu_amdkfd_gfx_v12.c. Can you send an updated patch that includes
them as well?
Thanks,
Felix
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
> index 04ef0ca10541..0239114fb6c4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
> @@ -352,7 +352,7 @@ static int kgd_hqd_dump(struct amdgpu_device *adev,
> (*dump)[i++][1] = RREG32_SOC15_IP(GC, addr); \
> } while (0)
>
> - *dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
> + *dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
> if (*dump == NULL)
> return -ENOMEM;
>
> @@ -449,7 +449,7 @@ static int kgd_hqd_sdma_dump(struct amdgpu_device *adev,
> #undef HQD_N_REGS
> #define HQD_N_REGS (19+6+7+10)
>
> - *dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
> + *dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
> if (*dump == NULL)
> return -ENOMEM;
>
Powered by blists - more mailing lists