From nobody Wed Dec 31 09:02:22 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFB22C4332F for ; Sun, 5 Nov 2023 16:07:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229481AbjKEQHP (ORCPT ); Sun, 5 Nov 2023 11:07:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229637AbjKEQHL (ORCPT ); Sun, 5 Nov 2023 11:07:11 -0500 Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC0C2EB for ; Sun, 5 Nov 2023 08:07:07 -0800 (PST) From: Sam James To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Sam James Subject: [PATCH] amdgpu: Adjust kmalloc_array calls for new -Walloc-size Date: Sun, 5 Nov 2023 16:06:50 +0000 Message-ID: <20231105160652.374422-1-sam@gentoo.org> X-Mailer: git-send-email 2.42.1 In-Reply-To: <87wmuwo7i3.fsf@gentoo.org> References: <87wmuwo7i3.fsf@gentoo.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org GCC 14 introduces a new -Walloc-size included in -Wextra which errors out on various files in drivers/gpu/drm/amd/amdgpu like: ``` amdgpu_amdkfd_gfx_v8.c:241:15: error: allocation of insufficient size =E2= =80=984=E2=80=99 for type =E2=80=98uint32_t[2]=E2=80=99 {aka =E2=80=98unsig= ned int[2]'} with size =E2=80=988=E2=80=99 [-Werror=3Dalloc-size] ``` This is because each HQD_N_REGS is actually a uint32_t[2]. Move the * 2 to the size argument so GCC sees we're allocating enough. Originally did 'sizeof(uint32_t) * 2' for the size but a friend suggested 'sizeof(**dump)' better communicates the intent. Link: https://lore.kernel.org/all/87wmuwo7i3.fsf@gentoo.org/ Signed-off-by: Sam James --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c b/drivers/= gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c index 625db444df1c..0ba15dcbe4e1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c @@ -200,7 +200,7 @@ int kgd_arcturus_hqd_sdma_dump(struct amdgpu_device *ad= ev, #undef HQD_N_REGS #define HQD_N_REGS (19+6+7+10) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c b/drivers/= gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c index 490c8f5ddb60..ca7238b5535b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c @@ -141,7 +141,7 @@ static int kgd_gfx_v9_4_3_hqd_sdma_dump(struct amdgpu_d= evice *adev, (*dump)[i++][1] =3D RREG32(addr); \ } while (0) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gp= u/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c index 6bf448ab3dff..ca4a6b82817f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c @@ -214,7 +214,7 @@ static int kgd_hqd_dump(struct amdgpu_device *adev, (*dump)[i++][1] =3D RREG32(addr); \ } while (0) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 @@ -301,7 +301,7 @@ static int kgd_hqd_sdma_dump(struct amdgpu_device *adev, #undef HQD_N_REGS #define HQD_N_REGS (19+4) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gp= u/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c index cd06e4a6d1da..0f3e2944edd7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c @@ -238,7 +238,7 @@ static int kgd_hqd_dump(struct amdgpu_device *adev, (*dump)[i++][1] =3D RREG32(addr); \ } while (0) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 @@ -324,7 +324,7 @@ static int kgd_hqd_sdma_dump(struct amdgpu_device *adev, #undef HQD_N_REGS #define HQD_N_REGS (19+4+2+3+7) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gp= u/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c index 51011e8ee90d..a3355b90aac5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -365,7 +365,7 @@ int kgd_gfx_v9_hqd_dump(struct amdgpu_device *adev, (*dump)[i++][1] =3D RREG32(addr); \ } while (0) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 @@ -462,7 +462,7 @@ static int kgd_hqd_sdma_dump(struct amdgpu_device *adev, #undef HQD_N_REGS #define HQD_N_REGS (19+6+7+10) =20 - *dump =3D kmalloc_array(HQD_N_REGS * 2, sizeof(uint32_t), GFP_KERNEL); + *dump =3D kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL); if (*dump =3D=3D NULL) return -ENOMEM; =20 --=20 2.42.1