drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.c:104:52: warning: '%s' directive output may be truncated writing up to 29 bytes into a region of size 23

From: kernel test robot
Date: Thu Dec 28 2023 - 18:03:32 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 505e701c0b2cfa9e34811020829759b7663a604c
commit: 276c03a0547068026241decd2c1159df0be5941f drm/amd/smu: Update SMU13 support for SMU 13.0.0
date: 1 year, 8 months ago
config: x86_64-randconfig-x066-20230529 (https://download.01.org/0day-ci/archive/20231229/202312290653.xdMUAh0o-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231229/202312290653.xdMUAh0o-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312290653.xdMUAh0o-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.c: In function 'smu_v13_0_init_microcode':
>> drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.c:104:52: warning: '%s' directive output may be truncated writing up to 29 bytes into a region of size 23 [-Wformat-truncation=]
104 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", chip_name);
| ^~
drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.c:104:9: note: 'snprintf' output between 12 and 41 bytes into a destination of size 30
104 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", chip_name);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +104 drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.c

76
77 static int smu_v13_0_get_pptable_from_firmware(struct smu_context *smu, void **table, uint32_t *size,
78 uint32_t pptable_id);
79
80 int smu_v13_0_init_microcode(struct smu_context *smu)
81 {
82 struct amdgpu_device *adev = smu->adev;
83 const char *chip_name;
84 char fw_name[30];
85 char ucode_prefix[30];
86 int err = 0;
87 const struct smc_firmware_header_v1_0 *hdr;
88 const struct common_firmware_header *header;
89 struct amdgpu_firmware_info *ucode = NULL;
90
91 /* doesn't need to load smu firmware in IOV mode */
92 if (amdgpu_sriov_vf(adev))
93 return 0;
94
95 switch (adev->ip_versions[MP1_HWIP][0]) {
96 case IP_VERSION(13, 0, 2):
97 chip_name = "aldebaran_smc";
98 break;
99 default:
100 amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode_prefix));
101 chip_name = ucode_prefix;
102 }
103
> 104 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", chip_name);
105
106 err = request_firmware(&adev->pm.fw, fw_name, adev->dev);
107 if (err)
108 goto out;
109 err = amdgpu_ucode_validate(adev->pm.fw);
110 if (err)
111 goto out;
112
113 hdr = (const struct smc_firmware_header_v1_0 *) adev->pm.fw->data;
114 amdgpu_ucode_print_smc_hdr(&hdr->header);
115 adev->pm.fw_version = le32_to_cpu(hdr->header.ucode_version);
116
117 if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
118 ucode = &adev->firmware.ucode[AMDGPU_UCODE_ID_SMC];
119 ucode->ucode_id = AMDGPU_UCODE_ID_SMC;
120 ucode->fw = adev->pm.fw;
121 header = (const struct common_firmware_header *)ucode->fw->data;
122 adev->firmware.fw_size +=
123 ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
124 }
125
126 out:
127 if (err) {
128 DRM_ERROR("smu_v13_0: Failed to load firmware \"%s\"\n",
129 fw_name);
130 release_firmware(adev->pm.fw);
131 adev->pm.fw = NULL;
132 }
133 return err;
134 }
135

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki