drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.c:110:54: warning: '.bin' directive output may be truncated writing 4 bytes into a region of size between 0 and 29

From: kernel test robot
Date: Wed Oct 18 2023 - 11:43:10 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 06dc10eae55b5ceabfef287a7e5f16ceea204aa0
commit: 6b54496238cc81792f697e7b21c452cdcdbb4ac5 drm/amd: Convert SMUv11 microcode to use `amdgpu_ucode_ip_version_decode`
date: 9 months ago
config: x86_64-randconfig-r006-20230904 (https://download.01.org/0day-ci/archive/20231018/202310182332.OXIRVcAe-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/20231018/202310182332.OXIRVcAe-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/202310182332.OXIRVcAe-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.c: In function 'smu_v11_0_init_microcode':
>> drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.c:110:54: warning: '.bin' directive output may be truncated writing 4 bytes into a region of size between 0 and 29 [-Wformat-truncation=]
110 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix);
| ^~~~
drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.c:110:9: note: 'snprintf' output between 12 and 41 bytes into a destination of size 36
110 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +110 drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.c

92
93 int smu_v11_0_init_microcode(struct smu_context *smu)
94 {
95 struct amdgpu_device *adev = smu->adev;
96 char ucode_prefix[30];
97 char fw_name[SMU_FW_NAME_LEN];
98 int err = 0;
99 const struct smc_firmware_header_v1_0 *hdr;
100 const struct common_firmware_header *header;
101 struct amdgpu_firmware_info *ucode = NULL;
102
103 if (amdgpu_sriov_vf(adev) &&
104 ((adev->ip_versions[MP1_HWIP][0] == IP_VERSION(11, 0, 9)) ||
105 (adev->ip_versions[MP1_HWIP][0] == IP_VERSION(11, 0, 7))))
106 return 0;
107
108 amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode_prefix));
109
> 110 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix);
111
112 err = request_firmware(&adev->pm.fw, fw_name, adev->dev);
113 if (err)
114 goto out;
115 err = amdgpu_ucode_validate(adev->pm.fw);
116 if (err)
117 goto out;
118
119 hdr = (const struct smc_firmware_header_v1_0 *) adev->pm.fw->data;
120 amdgpu_ucode_print_smc_hdr(&hdr->header);
121 adev->pm.fw_version = le32_to_cpu(hdr->header.ucode_version);
122
123 if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
124 ucode = &adev->firmware.ucode[AMDGPU_UCODE_ID_SMC];
125 ucode->ucode_id = AMDGPU_UCODE_ID_SMC;
126 ucode->fw = adev->pm.fw;
127 header = (const struct common_firmware_header *)ucode->fw->data;
128 adev->firmware.fw_size +=
129 ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
130 }
131
132 out:
133 if (err) {
134 DRM_ERROR("smu_v11_0: Failed to load firmware \"%s\"\n",
135 fw_name);
136 release_firmware(adev->pm.fw);
137 adev->pm.fw = NULL;
138 }
139 return err;
140 }
141

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