Message ID | 20250325000723.366365-1-andres.emb.sys@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/amdgpu: Replace deprecated function strcpy() with strscpy() | expand |
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");
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"); >
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");
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"); >
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 --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");
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(-)