diff mbox series

drm/amdgpu: Replace deprecated function strcpy() with strscpy()

Message ID 20250325000723.366365-1-andres.emb.sys@gmail.com (mailing list archive)
State New, archived
Headers show
Series drm/amdgpu: Replace deprecated function strcpy() with strscpy() | expand

Commit Message

Andres Urian Florez March 25, 2025, 12:07 a.m. UTC
Instead of using the strcpy() deprecated function to populate the
fw_name, use the strscpy() function

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy

Signed-off-by: Andres Urian Florez <andres.emb.sys@gmail.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 68 ++++++++++++-------------
 1 file changed, 34 insertions(+), 34 deletions(-)

Comments

Christian König March 25, 2025, 8:38 a.m. UTC | #1
Alex shouldn't be try to completely nuke the CGS functions?

Christian.

Am 25.03.25 um 01:07 schrieb Andres Urian Florez:
> Instead of using the strcpy() deprecated function to populate the
> fw_name, use the strscpy() function
>
> Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy
>
> Signed-off-by: Andres Urian Florez <andres.emb.sys@gmail.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 68 ++++++++++++-------------
>  1 file changed, 34 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> index 68bce6a6d09d..525e53c94f4f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> @@ -253,16 +253,16 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>  		if (!adev->pm.fw) {
>  			switch (adev->asic_type) {
>  			case CHIP_TAHITI:
> -				strcpy(fw_name, "radeon/tahiti_smc.bin");
> +				strscpy(fw_name, "radeon/tahiti_smc.bin");
>  				break;
>  			case CHIP_PITCAIRN:
>  				if ((adev->pdev->revision == 0x81) &&
>  				    ((adev->pdev->device == 0x6810) ||
>  				    (adev->pdev->device == 0x6811))) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "radeon/pitcairn_k_smc.bin");
> +					strscpy(fw_name, "radeon/pitcairn_k_smc.bin");
>  				} else {
> -					strcpy(fw_name, "radeon/pitcairn_smc.bin");
> +					strscpy(fw_name, "radeon/pitcairn_smc.bin");
>  				}
>  				break;
>  			case CHIP_VERDE:
> @@ -276,9 +276,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>  					((adev->pdev->device == 0x6823) ||
>  					(adev->pdev->device == 0x682b)))) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "radeon/verde_k_smc.bin");
> +					strscpy(fw_name, "radeon/verde_k_smc.bin");
>  				} else {
> -					strcpy(fw_name, "radeon/verde_smc.bin");
> +					strscpy(fw_name, "radeon/verde_smc.bin");
>  				}
>  				break;
>  			case CHIP_OLAND:
> @@ -290,9 +290,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>  				    ((adev->pdev->revision == 0x83) &&
>  					(adev->pdev->device == 0x6610))) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "radeon/oland_k_smc.bin");
> +					strscpy(fw_name, "radeon/oland_k_smc.bin");
>  				} else {
> -					strcpy(fw_name, "radeon/oland_smc.bin");
> +					strscpy(fw_name, "radeon/oland_smc.bin");
>  				}
>  				break;
>  			case CHIP_HAINAN:
> @@ -304,13 +304,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>  					(adev->pdev->device == 0x6665) ||
>  					 (adev->pdev->device == 0x6667)))) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "radeon/hainan_k_smc.bin");
> +					strscpy(fw_name, "radeon/hainan_k_smc.bin");
>  				} else if ((adev->pdev->revision == 0xc3) &&
>  					 (adev->pdev->device == 0x6665)) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "radeon/banks_k_2_smc.bin");
> +					strscpy(fw_name, "radeon/banks_k_2_smc.bin");
>  				} else {
> -					strcpy(fw_name, "radeon/hainan_smc.bin");
> +					strscpy(fw_name, "radeon/hainan_smc.bin");
>  				}
>  				break;
>  			case CHIP_BONAIRE:
> @@ -318,17 +318,17 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>  					(adev->pdev->revision == 0x81) ||
>  					(adev->pdev->device == 0x665f)) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "amdgpu/bonaire_k_smc.bin");
> +					strscpy(fw_name, "amdgpu/bonaire_k_smc.bin");
>  				} else {
> -					strcpy(fw_name, "amdgpu/bonaire_smc.bin");
> +					strscpy(fw_name, "amdgpu/bonaire_smc.bin");
>  				}
>  				break;
>  			case CHIP_HAWAII:
>  				if (adev->pdev->revision == 0x80) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "amdgpu/hawaii_k_smc.bin");
> +					strscpy(fw_name, "amdgpu/hawaii_k_smc.bin");
>  				} else {
> -					strcpy(fw_name, "amdgpu/hawaii_smc.bin");
> +					strscpy(fw_name, "amdgpu/hawaii_smc.bin");
>  				}
>  				break;
>  			case CHIP_TOPAZ:
> @@ -338,76 +338,76 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>  				    ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
>  				    ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
> +					strscpy(fw_name, "amdgpu/topaz_k_smc.bin");
>  				} else
> -					strcpy(fw_name, "amdgpu/topaz_smc.bin");
> +					strscpy(fw_name, "amdgpu/topaz_smc.bin");
>  				break;
>  			case CHIP_TONGA:
>  				if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
>  				    ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
> +					strscpy(fw_name, "amdgpu/tonga_k_smc.bin");
>  				} else
> -					strcpy(fw_name, "amdgpu/tonga_smc.bin");
> +					strscpy(fw_name, "amdgpu/tonga_smc.bin");
>  				break;
>  			case CHIP_FIJI:
> -				strcpy(fw_name, "amdgpu/fiji_smc.bin");
> +				strscpy(fw_name, "amdgpu/fiji_smc.bin");
>  				break;
>  			case CHIP_POLARIS11:
>  				if (type == CGS_UCODE_ID_SMU) {
>  					if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
>  						info->is_kicker = true;
> -						strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> +						strscpy(fw_name, "amdgpu/polaris11_k_smc.bin");
>  					} else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
>  						info->is_kicker = true;
> -						strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> +						strscpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
>  					} else {
> -						strcpy(fw_name, "amdgpu/polaris11_smc.bin");
> +						strscpy(fw_name, "amdgpu/polaris11_smc.bin");
>  					}
>  				} else if (type == CGS_UCODE_ID_SMU_SK) {
> -					strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> +					strscpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
>  				}
>  				break;
>  			case CHIP_POLARIS10:
>  				if (type == CGS_UCODE_ID_SMU) {
>  					if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
>  						info->is_kicker = true;
> -						strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> +						strscpy(fw_name, "amdgpu/polaris10_k_smc.bin");
>  					} else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
>  						info->is_kicker = true;
> -						strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> +						strscpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
>  					} else {
> -						strcpy(fw_name, "amdgpu/polaris10_smc.bin");
> +						strscpy(fw_name, "amdgpu/polaris10_smc.bin");
>  					}
>  				} else if (type == CGS_UCODE_ID_SMU_SK) {
> -					strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> +					strscpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
>  				}
>  				break;
>  			case CHIP_POLARIS12:
>  				if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
>  					info->is_kicker = true;
> -					strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> +					strscpy(fw_name, "amdgpu/polaris12_k_smc.bin");
>  				} else {
> -					strcpy(fw_name, "amdgpu/polaris12_smc.bin");
> +					strscpy(fw_name, "amdgpu/polaris12_smc.bin");
>  				}
>  				break;
>  			case CHIP_VEGAM:
> -				strcpy(fw_name, "amdgpu/vegam_smc.bin");
> +				strscpy(fw_name, "amdgpu/vegam_smc.bin");
>  				break;
>  			case CHIP_VEGA10:
>  				if ((adev->pdev->device == 0x687f) &&
>  					((adev->pdev->revision == 0xc0) ||
>  					(adev->pdev->revision == 0xc1) ||
>  					(adev->pdev->revision == 0xc3)))
> -					strcpy(fw_name, "amdgpu/vega10_acg_smc.bin");
> +					strscpy(fw_name, "amdgpu/vega10_acg_smc.bin");
>  				else
> -					strcpy(fw_name, "amdgpu/vega10_smc.bin");
> +					strscpy(fw_name, "amdgpu/vega10_smc.bin");
>  				break;
>  			case CHIP_VEGA12:
> -				strcpy(fw_name, "amdgpu/vega12_smc.bin");
> +				strscpy(fw_name, "amdgpu/vega12_smc.bin");
>  				break;
>  			case CHIP_VEGA20:
> -				strcpy(fw_name, "amdgpu/vega20_smc.bin");
> +				strscpy(fw_name, "amdgpu/vega20_smc.bin");
>  				break;
>  			default:
>  				DRM_ERROR("SMC firmware not supported\n");
Alex Deucher March 25, 2025, 1:30 p.m. UTC | #2
On Tue, Mar 25, 2025 at 4:38 AM Christian König
<christian.koenig@amd.com> wrote:
>
> Alex shouldn't be try to completely nuke the CGS functions?

Sure, but it would need to be replaced with something else so I'm not
sure it's worth the effort since it's only used by a few older GPUs.

Alex

>
> Christian.
>
> Am 25.03.25 um 01:07 schrieb Andres Urian Florez:
> > Instead of using the strcpy() deprecated function to populate the
> > fw_name, use the strscpy() function
> >
> > Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy
> >
> > Signed-off-by: Andres Urian Florez <andres.emb.sys@gmail.com>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 68 ++++++++++++-------------
> >  1 file changed, 34 insertions(+), 34 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> > index 68bce6a6d09d..525e53c94f4f 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> > @@ -253,16 +253,16 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >               if (!adev->pm.fw) {
> >                       switch (adev->asic_type) {
> >                       case CHIP_TAHITI:
> > -                             strcpy(fw_name, "radeon/tahiti_smc.bin");
> > +                             strscpy(fw_name, "radeon/tahiti_smc.bin");
> >                               break;
> >                       case CHIP_PITCAIRN:
> >                               if ((adev->pdev->revision == 0x81) &&
> >                                   ((adev->pdev->device == 0x6810) ||
> >                                   (adev->pdev->device == 0x6811))) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "radeon/pitcairn_k_smc.bin");
> > +                                     strscpy(fw_name, "radeon/pitcairn_k_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "radeon/pitcairn_smc.bin");
> > +                                     strscpy(fw_name, "radeon/pitcairn_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_VERDE:
> > @@ -276,9 +276,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                       ((adev->pdev->device == 0x6823) ||
> >                                       (adev->pdev->device == 0x682b)))) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "radeon/verde_k_smc.bin");
> > +                                     strscpy(fw_name, "radeon/verde_k_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "radeon/verde_smc.bin");
> > +                                     strscpy(fw_name, "radeon/verde_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_OLAND:
> > @@ -290,9 +290,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                   ((adev->pdev->revision == 0x83) &&
> >                                       (adev->pdev->device == 0x6610))) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "radeon/oland_k_smc.bin");
> > +                                     strscpy(fw_name, "radeon/oland_k_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "radeon/oland_smc.bin");
> > +                                     strscpy(fw_name, "radeon/oland_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_HAINAN:
> > @@ -304,13 +304,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                       (adev->pdev->device == 0x6665) ||
> >                                        (adev->pdev->device == 0x6667)))) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "radeon/hainan_k_smc.bin");
> > +                                     strscpy(fw_name, "radeon/hainan_k_smc.bin");
> >                               } else if ((adev->pdev->revision == 0xc3) &&
> >                                        (adev->pdev->device == 0x6665)) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "radeon/banks_k_2_smc.bin");
> > +                                     strscpy(fw_name, "radeon/banks_k_2_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "radeon/hainan_smc.bin");
> > +                                     strscpy(fw_name, "radeon/hainan_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_BONAIRE:
> > @@ -318,17 +318,17 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                       (adev->pdev->revision == 0x81) ||
> >                                       (adev->pdev->device == 0x665f)) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "amdgpu/bonaire_k_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/bonaire_k_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "amdgpu/bonaire_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/bonaire_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_HAWAII:
> >                               if (adev->pdev->revision == 0x80) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "amdgpu/hawaii_k_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/hawaii_k_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "amdgpu/hawaii_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/hawaii_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_TOPAZ:
> > @@ -338,76 +338,76 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
> >                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/topaz_k_smc.bin");
> >                               } else
> > -                                     strcpy(fw_name, "amdgpu/topaz_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/topaz_smc.bin");
> >                               break;
> >                       case CHIP_TONGA:
> >                               if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
> >                                   ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/tonga_k_smc.bin");
> >                               } else
> > -                                     strcpy(fw_name, "amdgpu/tonga_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/tonga_smc.bin");
> >                               break;
> >                       case CHIP_FIJI:
> > -                             strcpy(fw_name, "amdgpu/fiji_smc.bin");
> > +                             strscpy(fw_name, "amdgpu/fiji_smc.bin");
> >                               break;
> >                       case CHIP_POLARIS11:
> >                               if (type == CGS_UCODE_ID_SMU) {
> >                                       if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
> >                                               info->is_kicker = true;
> > -                                             strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> > +                                             strscpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> >                                       } else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
> >                                               info->is_kicker = true;
> > -                                             strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> > +                                             strscpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> >                                       } else {
> > -                                             strcpy(fw_name, "amdgpu/polaris11_smc.bin");
> > +                                             strscpy(fw_name, "amdgpu/polaris11_smc.bin");
> >                                       }
> >                               } else if (type == CGS_UCODE_ID_SMU_SK) {
> > -                                     strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> > +                                     strscpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> >                               }
> >                               break;
> >                       case CHIP_POLARIS10:
> >                               if (type == CGS_UCODE_ID_SMU) {
> >                                       if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
> >                                               info->is_kicker = true;
> > -                                             strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> > +                                             strscpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> >                                       } else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
> >                                               info->is_kicker = true;
> > -                                             strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> > +                                             strscpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> >                                       } else {
> > -                                             strcpy(fw_name, "amdgpu/polaris10_smc.bin");
> > +                                             strscpy(fw_name, "amdgpu/polaris10_smc.bin");
> >                                       }
> >                               } else if (type == CGS_UCODE_ID_SMU_SK) {
> > -                                     strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> > +                                     strscpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> >                               }
> >                               break;
> >                       case CHIP_POLARIS12:
> >                               if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
> >                                       info->is_kicker = true;
> > -                                     strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> >                               } else {
> > -                                     strcpy(fw_name, "amdgpu/polaris12_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/polaris12_smc.bin");
> >                               }
> >                               break;
> >                       case CHIP_VEGAM:
> > -                             strcpy(fw_name, "amdgpu/vegam_smc.bin");
> > +                             strscpy(fw_name, "amdgpu/vegam_smc.bin");
> >                               break;
> >                       case CHIP_VEGA10:
> >                               if ((adev->pdev->device == 0x687f) &&
> >                                       ((adev->pdev->revision == 0xc0) ||
> >                                       (adev->pdev->revision == 0xc1) ||
> >                                       (adev->pdev->revision == 0xc3)))
> > -                                     strcpy(fw_name, "amdgpu/vega10_acg_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/vega10_acg_smc.bin");
> >                               else
> > -                                     strcpy(fw_name, "amdgpu/vega10_smc.bin");
> > +                                     strscpy(fw_name, "amdgpu/vega10_smc.bin");
> >                               break;
> >                       case CHIP_VEGA12:
> > -                             strcpy(fw_name, "amdgpu/vega12_smc.bin");
> > +                             strscpy(fw_name, "amdgpu/vega12_smc.bin");
> >                               break;
> >                       case CHIP_VEGA20:
> > -                             strcpy(fw_name, "amdgpu/vega20_smc.bin");
> > +                             strscpy(fw_name, "amdgpu/vega20_smc.bin");
> >                               break;
> >                       default:
> >                               DRM_ERROR("SMC firmware not supported\n");
>
Christian König March 25, 2025, 1:50 p.m. UTC | #3
Am 25.03.25 um 14:30 schrieb Alex Deucher:
> On Tue, Mar 25, 2025 at 4:38 AM Christian König
> <christian.koenig@amd.com> wrote:
>> Alex shouldn't be try to completely nuke the CGS functions?
> Sure, but it would need to be replaced with something else so I'm not
> sure it's worth the effort since it's only used by a few older GPUs.

Well how about at least nuking this code here? Take a closer look it's trying to pull in firmware from "radeon/*".

That is certainly not used :)

Christian.

>
> Alex
>
>> Christian.
>>
>> Am 25.03.25 um 01:07 schrieb Andres Urian Florez:
>>> Instead of using the strcpy() deprecated function to populate the
>>> fw_name, use the strscpy() function
>>>
>>> Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy
>>>
>>> Signed-off-by: Andres Urian Florez <andres.emb.sys@gmail.com>
>>> ---
>>>  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 68 ++++++++++++-------------
>>>  1 file changed, 34 insertions(+), 34 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
>>> index 68bce6a6d09d..525e53c94f4f 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
>>> @@ -253,16 +253,16 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>>>               if (!adev->pm.fw) {
>>>                       switch (adev->asic_type) {
>>>                       case CHIP_TAHITI:
>>> -                             strcpy(fw_name, "radeon/tahiti_smc.bin");
>>> +                             strscpy(fw_name, "radeon/tahiti_smc.bin");
>>>                               break;
>>>                       case CHIP_PITCAIRN:
>>>                               if ((adev->pdev->revision == 0x81) &&
>>>                                   ((adev->pdev->device == 0x6810) ||
>>>                                   (adev->pdev->device == 0x6811))) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "radeon/pitcairn_k_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/pitcairn_k_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "radeon/pitcairn_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/pitcairn_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_VERDE:
>>> @@ -276,9 +276,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>>>                                       ((adev->pdev->device == 0x6823) ||
>>>                                       (adev->pdev->device == 0x682b)))) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "radeon/verde_k_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/verde_k_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "radeon/verde_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/verde_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_OLAND:
>>> @@ -290,9 +290,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>>>                                   ((adev->pdev->revision == 0x83) &&
>>>                                       (adev->pdev->device == 0x6610))) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "radeon/oland_k_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/oland_k_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "radeon/oland_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/oland_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_HAINAN:
>>> @@ -304,13 +304,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>>>                                       (adev->pdev->device == 0x6665) ||
>>>                                        (adev->pdev->device == 0x6667)))) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "radeon/hainan_k_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/hainan_k_smc.bin");
>>>                               } else if ((adev->pdev->revision == 0xc3) &&
>>>                                        (adev->pdev->device == 0x6665)) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "radeon/banks_k_2_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/banks_k_2_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "radeon/hainan_smc.bin");
>>> +                                     strscpy(fw_name, "radeon/hainan_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_BONAIRE:
>>> @@ -318,17 +318,17 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>>>                                       (adev->pdev->revision == 0x81) ||
>>>                                       (adev->pdev->device == 0x665f)) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "amdgpu/bonaire_k_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/bonaire_k_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "amdgpu/bonaire_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/bonaire_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_HAWAII:
>>>                               if (adev->pdev->revision == 0x80) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "amdgpu/hawaii_k_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/hawaii_k_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "amdgpu/hawaii_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/hawaii_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_TOPAZ:
>>> @@ -338,76 +338,76 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>>>                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
>>>                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/topaz_k_smc.bin");
>>>                               } else
>>> -                                     strcpy(fw_name, "amdgpu/topaz_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/topaz_smc.bin");
>>>                               break;
>>>                       case CHIP_TONGA:
>>>                               if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
>>>                                   ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/tonga_k_smc.bin");
>>>                               } else
>>> -                                     strcpy(fw_name, "amdgpu/tonga_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/tonga_smc.bin");
>>>                               break;
>>>                       case CHIP_FIJI:
>>> -                             strcpy(fw_name, "amdgpu/fiji_smc.bin");
>>> +                             strscpy(fw_name, "amdgpu/fiji_smc.bin");
>>>                               break;
>>>                       case CHIP_POLARIS11:
>>>                               if (type == CGS_UCODE_ID_SMU) {
>>>                                       if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
>>>                                               info->is_kicker = true;
>>> -                                             strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
>>> +                                             strscpy(fw_name, "amdgpu/polaris11_k_smc.bin");
>>>                                       } else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
>>>                                               info->is_kicker = true;
>>> -                                             strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
>>> +                                             strscpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
>>>                                       } else {
>>> -                                             strcpy(fw_name, "amdgpu/polaris11_smc.bin");
>>> +                                             strscpy(fw_name, "amdgpu/polaris11_smc.bin");
>>>                                       }
>>>                               } else if (type == CGS_UCODE_ID_SMU_SK) {
>>> -                                     strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
>>> +                                     strscpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_POLARIS10:
>>>                               if (type == CGS_UCODE_ID_SMU) {
>>>                                       if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
>>>                                               info->is_kicker = true;
>>> -                                             strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
>>> +                                             strscpy(fw_name, "amdgpu/polaris10_k_smc.bin");
>>>                                       } else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
>>>                                               info->is_kicker = true;
>>> -                                             strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
>>> +                                             strscpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
>>>                                       } else {
>>> -                                             strcpy(fw_name, "amdgpu/polaris10_smc.bin");
>>> +                                             strscpy(fw_name, "amdgpu/polaris10_smc.bin");
>>>                                       }
>>>                               } else if (type == CGS_UCODE_ID_SMU_SK) {
>>> -                                     strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
>>> +                                     strscpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_POLARIS12:
>>>                               if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
>>>                                       info->is_kicker = true;
>>> -                                     strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/polaris12_k_smc.bin");
>>>                               } else {
>>> -                                     strcpy(fw_name, "amdgpu/polaris12_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/polaris12_smc.bin");
>>>                               }
>>>                               break;
>>>                       case CHIP_VEGAM:
>>> -                             strcpy(fw_name, "amdgpu/vegam_smc.bin");
>>> +                             strscpy(fw_name, "amdgpu/vegam_smc.bin");
>>>                               break;
>>>                       case CHIP_VEGA10:
>>>                               if ((adev->pdev->device == 0x687f) &&
>>>                                       ((adev->pdev->revision == 0xc0) ||
>>>                                       (adev->pdev->revision == 0xc1) ||
>>>                                       (adev->pdev->revision == 0xc3)))
>>> -                                     strcpy(fw_name, "amdgpu/vega10_acg_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/vega10_acg_smc.bin");
>>>                               else
>>> -                                     strcpy(fw_name, "amdgpu/vega10_smc.bin");
>>> +                                     strscpy(fw_name, "amdgpu/vega10_smc.bin");
>>>                               break;
>>>                       case CHIP_VEGA12:
>>> -                             strcpy(fw_name, "amdgpu/vega12_smc.bin");
>>> +                             strscpy(fw_name, "amdgpu/vega12_smc.bin");
>>>                               break;
>>>                       case CHIP_VEGA20:
>>> -                             strcpy(fw_name, "amdgpu/vega20_smc.bin");
>>> +                             strscpy(fw_name, "amdgpu/vega20_smc.bin");
>>>                               break;
>>>                       default:
>>>                               DRM_ERROR("SMC firmware not supported\n");
Alex Deucher March 25, 2025, 1:59 p.m. UTC | #4
On Tue, Mar 25, 2025 at 9:50 AM Christian König
<christian.koenig@amd.com> wrote:
>
> Am 25.03.25 um 14:30 schrieb Alex Deucher:
> > On Tue, Mar 25, 2025 at 4:38 AM Christian König
> > <christian.koenig@amd.com> wrote:
> >> Alex shouldn't be try to completely nuke the CGS functions?
> > Sure, but it would need to be replaced with something else so I'm not
> > sure it's worth the effort since it's only used by a few older GPUs.
>
> Well how about at least nuking this code here? Take a closer look it's trying to pull in firmware from "radeon/*".
>
> That is certainly not used :)

Yes, that can be removed.

Alex

>
> Christian.
>
> >
> > Alex
> >
> >> Christian.
> >>
> >> Am 25.03.25 um 01:07 schrieb Andres Urian Florez:
> >>> Instead of using the strcpy() deprecated function to populate the
> >>> fw_name, use the strscpy() function
> >>>
> >>> Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy
> >>>
> >>> Signed-off-by: Andres Urian Florez <andres.emb.sys@gmail.com>
> >>> ---
> >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 68 ++++++++++++-------------
> >>>  1 file changed, 34 insertions(+), 34 deletions(-)
> >>>
> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> >>> index 68bce6a6d09d..525e53c94f4f 100644
> >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> >>> @@ -253,16 +253,16 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >>>               if (!adev->pm.fw) {
> >>>                       switch (adev->asic_type) {
> >>>                       case CHIP_TAHITI:
> >>> -                             strcpy(fw_name, "radeon/tahiti_smc.bin");
> >>> +                             strscpy(fw_name, "radeon/tahiti_smc.bin");
> >>>                               break;
> >>>                       case CHIP_PITCAIRN:
> >>>                               if ((adev->pdev->revision == 0x81) &&
> >>>                                   ((adev->pdev->device == 0x6810) ||
> >>>                                   (adev->pdev->device == 0x6811))) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "radeon/pitcairn_k_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/pitcairn_k_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "radeon/pitcairn_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/pitcairn_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_VERDE:
> >>> @@ -276,9 +276,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >>>                                       ((adev->pdev->device == 0x6823) ||
> >>>                                       (adev->pdev->device == 0x682b)))) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "radeon/verde_k_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/verde_k_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "radeon/verde_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/verde_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_OLAND:
> >>> @@ -290,9 +290,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >>>                                   ((adev->pdev->revision == 0x83) &&
> >>>                                       (adev->pdev->device == 0x6610))) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "radeon/oland_k_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/oland_k_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "radeon/oland_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/oland_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_HAINAN:
> >>> @@ -304,13 +304,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >>>                                       (adev->pdev->device == 0x6665) ||
> >>>                                        (adev->pdev->device == 0x6667)))) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "radeon/hainan_k_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/hainan_k_smc.bin");
> >>>                               } else if ((adev->pdev->revision == 0xc3) &&
> >>>                                        (adev->pdev->device == 0x6665)) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "radeon/banks_k_2_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/banks_k_2_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "radeon/hainan_smc.bin");
> >>> +                                     strscpy(fw_name, "radeon/hainan_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_BONAIRE:
> >>> @@ -318,17 +318,17 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >>>                                       (adev->pdev->revision == 0x81) ||
> >>>                                       (adev->pdev->device == 0x665f)) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "amdgpu/bonaire_k_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/bonaire_k_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "amdgpu/bonaire_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/bonaire_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_HAWAII:
> >>>                               if (adev->pdev->revision == 0x80) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "amdgpu/hawaii_k_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/hawaii_k_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "amdgpu/hawaii_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/hawaii_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_TOPAZ:
> >>> @@ -338,76 +338,76 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >>>                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
> >>>                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/topaz_k_smc.bin");
> >>>                               } else
> >>> -                                     strcpy(fw_name, "amdgpu/topaz_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/topaz_smc.bin");
> >>>                               break;
> >>>                       case CHIP_TONGA:
> >>>                               if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
> >>>                                   ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/tonga_k_smc.bin");
> >>>                               } else
> >>> -                                     strcpy(fw_name, "amdgpu/tonga_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/tonga_smc.bin");
> >>>                               break;
> >>>                       case CHIP_FIJI:
> >>> -                             strcpy(fw_name, "amdgpu/fiji_smc.bin");
> >>> +                             strscpy(fw_name, "amdgpu/fiji_smc.bin");
> >>>                               break;
> >>>                       case CHIP_POLARIS11:
> >>>                               if (type == CGS_UCODE_ID_SMU) {
> >>>                                       if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
> >>>                                               info->is_kicker = true;
> >>> -                                             strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> >>> +                                             strscpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> >>>                                       } else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
> >>>                                               info->is_kicker = true;
> >>> -                                             strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> >>> +                                             strscpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> >>>                                       } else {
> >>> -                                             strcpy(fw_name, "amdgpu/polaris11_smc.bin");
> >>> +                                             strscpy(fw_name, "amdgpu/polaris11_smc.bin");
> >>>                                       }
> >>>                               } else if (type == CGS_UCODE_ID_SMU_SK) {
> >>> -                                     strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_POLARIS10:
> >>>                               if (type == CGS_UCODE_ID_SMU) {
> >>>                                       if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
> >>>                                               info->is_kicker = true;
> >>> -                                             strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> >>> +                                             strscpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> >>>                                       } else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
> >>>                                               info->is_kicker = true;
> >>> -                                             strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> >>> +                                             strscpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> >>>                                       } else {
> >>> -                                             strcpy(fw_name, "amdgpu/polaris10_smc.bin");
> >>> +                                             strscpy(fw_name, "amdgpu/polaris10_smc.bin");
> >>>                                       }
> >>>                               } else if (type == CGS_UCODE_ID_SMU_SK) {
> >>> -                                     strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_POLARIS12:
> >>>                               if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
> >>>                                       info->is_kicker = true;
> >>> -                                     strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> >>>                               } else {
> >>> -                                     strcpy(fw_name, "amdgpu/polaris12_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/polaris12_smc.bin");
> >>>                               }
> >>>                               break;
> >>>                       case CHIP_VEGAM:
> >>> -                             strcpy(fw_name, "amdgpu/vegam_smc.bin");
> >>> +                             strscpy(fw_name, "amdgpu/vegam_smc.bin");
> >>>                               break;
> >>>                       case CHIP_VEGA10:
> >>>                               if ((adev->pdev->device == 0x687f) &&
> >>>                                       ((adev->pdev->revision == 0xc0) ||
> >>>                                       (adev->pdev->revision == 0xc1) ||
> >>>                                       (adev->pdev->revision == 0xc3)))
> >>> -                                     strcpy(fw_name, "amdgpu/vega10_acg_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/vega10_acg_smc.bin");
> >>>                               else
> >>> -                                     strcpy(fw_name, "amdgpu/vega10_smc.bin");
> >>> +                                     strscpy(fw_name, "amdgpu/vega10_smc.bin");
> >>>                               break;
> >>>                       case CHIP_VEGA12:
> >>> -                             strcpy(fw_name, "amdgpu/vega12_smc.bin");
> >>> +                             strscpy(fw_name, "amdgpu/vega12_smc.bin");
> >>>                               break;
> >>>                       case CHIP_VEGA20:
> >>> -                             strcpy(fw_name, "amdgpu/vega20_smc.bin");
> >>> +                             strscpy(fw_name, "amdgpu/vega20_smc.bin");
> >>>                               break;
> >>>                       default:
> >>>                               DRM_ERROR("SMC firmware not supported\n");
>
Alex Deucher March 25, 2025, 2:14 p.m. UTC | #5
Applied.  Thanks!

Alex

On Mon, Mar 24, 2025 at 8:08 PM Andres Urian Florez
<andres.emb.sys@gmail.com> wrote:
>
> Instead of using the strcpy() deprecated function to populate the
> fw_name, use the strscpy() function
>
> Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy
>
> Signed-off-by: Andres Urian Florez <andres.emb.sys@gmail.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 68 ++++++++++++-------------
>  1 file changed, 34 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> index 68bce6a6d09d..525e53c94f4f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> @@ -253,16 +253,16 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>                 if (!adev->pm.fw) {
>                         switch (adev->asic_type) {
>                         case CHIP_TAHITI:
> -                               strcpy(fw_name, "radeon/tahiti_smc.bin");
> +                               strscpy(fw_name, "radeon/tahiti_smc.bin");
>                                 break;
>                         case CHIP_PITCAIRN:
>                                 if ((adev->pdev->revision == 0x81) &&
>                                     ((adev->pdev->device == 0x6810) ||
>                                     (adev->pdev->device == 0x6811))) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "radeon/pitcairn_k_smc.bin");
> +                                       strscpy(fw_name, "radeon/pitcairn_k_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "radeon/pitcairn_smc.bin");
> +                                       strscpy(fw_name, "radeon/pitcairn_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_VERDE:
> @@ -276,9 +276,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>                                         ((adev->pdev->device == 0x6823) ||
>                                         (adev->pdev->device == 0x682b)))) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "radeon/verde_k_smc.bin");
> +                                       strscpy(fw_name, "radeon/verde_k_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "radeon/verde_smc.bin");
> +                                       strscpy(fw_name, "radeon/verde_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_OLAND:
> @@ -290,9 +290,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>                                     ((adev->pdev->revision == 0x83) &&
>                                         (adev->pdev->device == 0x6610))) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "radeon/oland_k_smc.bin");
> +                                       strscpy(fw_name, "radeon/oland_k_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "radeon/oland_smc.bin");
> +                                       strscpy(fw_name, "radeon/oland_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_HAINAN:
> @@ -304,13 +304,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>                                         (adev->pdev->device == 0x6665) ||
>                                          (adev->pdev->device == 0x6667)))) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "radeon/hainan_k_smc.bin");
> +                                       strscpy(fw_name, "radeon/hainan_k_smc.bin");
>                                 } else if ((adev->pdev->revision == 0xc3) &&
>                                          (adev->pdev->device == 0x6665)) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "radeon/banks_k_2_smc.bin");
> +                                       strscpy(fw_name, "radeon/banks_k_2_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "radeon/hainan_smc.bin");
> +                                       strscpy(fw_name, "radeon/hainan_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_BONAIRE:
> @@ -318,17 +318,17 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>                                         (adev->pdev->revision == 0x81) ||
>                                         (adev->pdev->device == 0x665f)) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "amdgpu/bonaire_k_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/bonaire_k_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "amdgpu/bonaire_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/bonaire_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_HAWAII:
>                                 if (adev->pdev->revision == 0x80) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "amdgpu/hawaii_k_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/hawaii_k_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "amdgpu/hawaii_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/hawaii_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_TOPAZ:
> @@ -338,76 +338,76 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
>                                     ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
>                                     ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/topaz_k_smc.bin");
>                                 } else
> -                                       strcpy(fw_name, "amdgpu/topaz_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/topaz_smc.bin");
>                                 break;
>                         case CHIP_TONGA:
>                                 if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
>                                     ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/tonga_k_smc.bin");
>                                 } else
> -                                       strcpy(fw_name, "amdgpu/tonga_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/tonga_smc.bin");
>                                 break;
>                         case CHIP_FIJI:
> -                               strcpy(fw_name, "amdgpu/fiji_smc.bin");
> +                               strscpy(fw_name, "amdgpu/fiji_smc.bin");
>                                 break;
>                         case CHIP_POLARIS11:
>                                 if (type == CGS_UCODE_ID_SMU) {
>                                         if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
>                                                 info->is_kicker = true;
> -                                               strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> +                                               strscpy(fw_name, "amdgpu/polaris11_k_smc.bin");
>                                         } else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
>                                                 info->is_kicker = true;
> -                                               strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> +                                               strscpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
>                                         } else {
> -                                               strcpy(fw_name, "amdgpu/polaris11_smc.bin");
> +                                               strscpy(fw_name, "amdgpu/polaris11_smc.bin");
>                                         }
>                                 } else if (type == CGS_UCODE_ID_SMU_SK) {
> -                                       strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> +                                       strscpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
>                                 }
>                                 break;
>                         case CHIP_POLARIS10:
>                                 if (type == CGS_UCODE_ID_SMU) {
>                                         if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
>                                                 info->is_kicker = true;
> -                                               strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> +                                               strscpy(fw_name, "amdgpu/polaris10_k_smc.bin");
>                                         } else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
>                                                 info->is_kicker = true;
> -                                               strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> +                                               strscpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
>                                         } else {
> -                                               strcpy(fw_name, "amdgpu/polaris10_smc.bin");
> +                                               strscpy(fw_name, "amdgpu/polaris10_smc.bin");
>                                         }
>                                 } else if (type == CGS_UCODE_ID_SMU_SK) {
> -                                       strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> +                                       strscpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
>                                 }
>                                 break;
>                         case CHIP_POLARIS12:
>                                 if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
>                                         info->is_kicker = true;
> -                                       strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/polaris12_k_smc.bin");
>                                 } else {
> -                                       strcpy(fw_name, "amdgpu/polaris12_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/polaris12_smc.bin");
>                                 }
>                                 break;
>                         case CHIP_VEGAM:
> -                               strcpy(fw_name, "amdgpu/vegam_smc.bin");
> +                               strscpy(fw_name, "amdgpu/vegam_smc.bin");
>                                 break;
>                         case CHIP_VEGA10:
>                                 if ((adev->pdev->device == 0x687f) &&
>                                         ((adev->pdev->revision == 0xc0) ||
>                                         (adev->pdev->revision == 0xc1) ||
>                                         (adev->pdev->revision == 0xc3)))
> -                                       strcpy(fw_name, "amdgpu/vega10_acg_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/vega10_acg_smc.bin");
>                                 else
> -                                       strcpy(fw_name, "amdgpu/vega10_smc.bin");
> +                                       strscpy(fw_name, "amdgpu/vega10_smc.bin");
>                                 break;
>                         case CHIP_VEGA12:
> -                               strcpy(fw_name, "amdgpu/vega12_smc.bin");
> +                               strscpy(fw_name, "amdgpu/vega12_smc.bin");
>                                 break;
>                         case CHIP_VEGA20:
> -                               strcpy(fw_name, "amdgpu/vega20_smc.bin");
> +                               strscpy(fw_name, "amdgpu/vega20_smc.bin");
>                                 break;
>                         default:
>                                 DRM_ERROR("SMC firmware not supported\n");
> --
> 2.43.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index 68bce6a6d09d..525e53c94f4f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -253,16 +253,16 @@  static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 		if (!adev->pm.fw) {
 			switch (adev->asic_type) {
 			case CHIP_TAHITI:
-				strcpy(fw_name, "radeon/tahiti_smc.bin");
+				strscpy(fw_name, "radeon/tahiti_smc.bin");
 				break;
 			case CHIP_PITCAIRN:
 				if ((adev->pdev->revision == 0x81) &&
 				    ((adev->pdev->device == 0x6810) ||
 				    (adev->pdev->device == 0x6811))) {
 					info->is_kicker = true;
-					strcpy(fw_name, "radeon/pitcairn_k_smc.bin");
+					strscpy(fw_name, "radeon/pitcairn_k_smc.bin");
 				} else {
-					strcpy(fw_name, "radeon/pitcairn_smc.bin");
+					strscpy(fw_name, "radeon/pitcairn_smc.bin");
 				}
 				break;
 			case CHIP_VERDE:
@@ -276,9 +276,9 @@  static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 					((adev->pdev->device == 0x6823) ||
 					(adev->pdev->device == 0x682b)))) {
 					info->is_kicker = true;
-					strcpy(fw_name, "radeon/verde_k_smc.bin");
+					strscpy(fw_name, "radeon/verde_k_smc.bin");
 				} else {
-					strcpy(fw_name, "radeon/verde_smc.bin");
+					strscpy(fw_name, "radeon/verde_smc.bin");
 				}
 				break;
 			case CHIP_OLAND:
@@ -290,9 +290,9 @@  static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 				    ((adev->pdev->revision == 0x83) &&
 					(adev->pdev->device == 0x6610))) {
 					info->is_kicker = true;
-					strcpy(fw_name, "radeon/oland_k_smc.bin");
+					strscpy(fw_name, "radeon/oland_k_smc.bin");
 				} else {
-					strcpy(fw_name, "radeon/oland_smc.bin");
+					strscpy(fw_name, "radeon/oland_smc.bin");
 				}
 				break;
 			case CHIP_HAINAN:
@@ -304,13 +304,13 @@  static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 					(adev->pdev->device == 0x6665) ||
 					 (adev->pdev->device == 0x6667)))) {
 					info->is_kicker = true;
-					strcpy(fw_name, "radeon/hainan_k_smc.bin");
+					strscpy(fw_name, "radeon/hainan_k_smc.bin");
 				} else if ((adev->pdev->revision == 0xc3) &&
 					 (adev->pdev->device == 0x6665)) {
 					info->is_kicker = true;
-					strcpy(fw_name, "radeon/banks_k_2_smc.bin");
+					strscpy(fw_name, "radeon/banks_k_2_smc.bin");
 				} else {
-					strcpy(fw_name, "radeon/hainan_smc.bin");
+					strscpy(fw_name, "radeon/hainan_smc.bin");
 				}
 				break;
 			case CHIP_BONAIRE:
@@ -318,17 +318,17 @@  static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 					(adev->pdev->revision == 0x81) ||
 					(adev->pdev->device == 0x665f)) {
 					info->is_kicker = true;
-					strcpy(fw_name, "amdgpu/bonaire_k_smc.bin");
+					strscpy(fw_name, "amdgpu/bonaire_k_smc.bin");
 				} else {
-					strcpy(fw_name, "amdgpu/bonaire_smc.bin");
+					strscpy(fw_name, "amdgpu/bonaire_smc.bin");
 				}
 				break;
 			case CHIP_HAWAII:
 				if (adev->pdev->revision == 0x80) {
 					info->is_kicker = true;
-					strcpy(fw_name, "amdgpu/hawaii_k_smc.bin");
+					strscpy(fw_name, "amdgpu/hawaii_k_smc.bin");
 				} else {
-					strcpy(fw_name, "amdgpu/hawaii_smc.bin");
+					strscpy(fw_name, "amdgpu/hawaii_smc.bin");
 				}
 				break;
 			case CHIP_TOPAZ:
@@ -338,76 +338,76 @@  static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 				    ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
 				    ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
 					info->is_kicker = true;
-					strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
+					strscpy(fw_name, "amdgpu/topaz_k_smc.bin");
 				} else
-					strcpy(fw_name, "amdgpu/topaz_smc.bin");
+					strscpy(fw_name, "amdgpu/topaz_smc.bin");
 				break;
 			case CHIP_TONGA:
 				if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
 				    ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
 					info->is_kicker = true;
-					strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
+					strscpy(fw_name, "amdgpu/tonga_k_smc.bin");
 				} else
-					strcpy(fw_name, "amdgpu/tonga_smc.bin");
+					strscpy(fw_name, "amdgpu/tonga_smc.bin");
 				break;
 			case CHIP_FIJI:
-				strcpy(fw_name, "amdgpu/fiji_smc.bin");
+				strscpy(fw_name, "amdgpu/fiji_smc.bin");
 				break;
 			case CHIP_POLARIS11:
 				if (type == CGS_UCODE_ID_SMU) {
 					if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
 						info->is_kicker = true;
-						strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
+						strscpy(fw_name, "amdgpu/polaris11_k_smc.bin");
 					} else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
 						info->is_kicker = true;
-						strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
+						strscpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
 					} else {
-						strcpy(fw_name, "amdgpu/polaris11_smc.bin");
+						strscpy(fw_name, "amdgpu/polaris11_smc.bin");
 					}
 				} else if (type == CGS_UCODE_ID_SMU_SK) {
-					strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
+					strscpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
 				}
 				break;
 			case CHIP_POLARIS10:
 				if (type == CGS_UCODE_ID_SMU) {
 					if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
 						info->is_kicker = true;
-						strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
+						strscpy(fw_name, "amdgpu/polaris10_k_smc.bin");
 					} else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
 						info->is_kicker = true;
-						strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
+						strscpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
 					} else {
-						strcpy(fw_name, "amdgpu/polaris10_smc.bin");
+						strscpy(fw_name, "amdgpu/polaris10_smc.bin");
 					}
 				} else if (type == CGS_UCODE_ID_SMU_SK) {
-					strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
+					strscpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
 				}
 				break;
 			case CHIP_POLARIS12:
 				if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
 					info->is_kicker = true;
-					strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
+					strscpy(fw_name, "amdgpu/polaris12_k_smc.bin");
 				} else {
-					strcpy(fw_name, "amdgpu/polaris12_smc.bin");
+					strscpy(fw_name, "amdgpu/polaris12_smc.bin");
 				}
 				break;
 			case CHIP_VEGAM:
-				strcpy(fw_name, "amdgpu/vegam_smc.bin");
+				strscpy(fw_name, "amdgpu/vegam_smc.bin");
 				break;
 			case CHIP_VEGA10:
 				if ((adev->pdev->device == 0x687f) &&
 					((adev->pdev->revision == 0xc0) ||
 					(adev->pdev->revision == 0xc1) ||
 					(adev->pdev->revision == 0xc3)))
-					strcpy(fw_name, "amdgpu/vega10_acg_smc.bin");
+					strscpy(fw_name, "amdgpu/vega10_acg_smc.bin");
 				else
-					strcpy(fw_name, "amdgpu/vega10_smc.bin");
+					strscpy(fw_name, "amdgpu/vega10_smc.bin");
 				break;
 			case CHIP_VEGA12:
-				strcpy(fw_name, "amdgpu/vega12_smc.bin");
+				strscpy(fw_name, "amdgpu/vega12_smc.bin");
 				break;
 			case CHIP_VEGA20:
-				strcpy(fw_name, "amdgpu/vega20_smc.bin");
+				strscpy(fw_name, "amdgpu/vega20_smc.bin");
 				break;
 			default:
 				DRM_ERROR("SMC firmware not supported\n");