mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	drm/amd: Use a constant format string for amdgpu_ucode_request
Multiple files in amdgpu call amdgpu_ucode_request() with a fw_name
variable that the compiler cannot check for being a valid format string,
as seen by enabling the (default-disabled) -Wformat-security option:
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c: In function 'amdgpu_mes_init_microcode':
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c:1517:61: error: format not a string literal and no format arguments [-Werror=format-security]
 1517 |         r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe], fw_name);
      |                                                             ^~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c: In function 'amdgpu_uvd_sw_init':
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:263:9: error: format not a string literal and no format arguments [-Werror=format-security]
  263 |         r = amdgpu_ucode_request(adev, &adev->uvd.fw, fw_name);
      |         ^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c: In function 'amdgpu_vce_sw_init':
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:161:9: error: format not a string literal and no format arguments [-Werror=format-security]
  161 |         r = amdgpu_ucode_request(adev, &adev->vce.fw, fw_name);
      |         ^
drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c: In function 'amdgpu_umsch_mm_init_microcode':
drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c:590:9: error: format not a string literal and no format arguments [-Werror=format-security]
  590 |         r = amdgpu_ucode_request(adev, &adev->umsch_mm.fw, fw_name);
      |         ^
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c: In function 'amdgpu_cgs_get_firmware_info':
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c:417:72: error: format not a string literal and no format arguments [-Werror=format-security]
  417 |                         err = amdgpu_ucode_request(adev, &adev->pm.fw, fw_name);
      |                                                                        ^~~~~~~
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c: In function 'load_dmcu_fw':
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2221:9: error: format not a string literal and no format arguments [-Werror=format-security]
 2221 |         r = amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, fw_name_dmcu);
      |         ^
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c: In function 'dm_init_microcode':
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5147:9: error: format not a string literal and no format arguments [-Werror=format-security]
 5147 |         r = amdgpu_ucode_request(adev, &adev->dm.dmub_fw, fw_name_dmub);
      |         ^
Change these all to use a "%s" format with the actual name as an argument,
to let the compiler prove this to be correct.
Fixes: e5a7d047f4 ("drm/amd: Use `amdgpu_ucode_*` helpers for CGS")
Fixes: 52215e2a5d ("drm/amd: Use `amdgpu_ucode_*` helpers for VCE")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
			
			
This commit is contained in:
		
							parent
							
								
									17d30ed33c
								
							
						
					
					
						commit
						020620424b
					
				
					 6 changed files with 7 additions and 7 deletions
				
			
		| 
						 | 
					@ -414,7 +414,7 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 | 
				
			||||||
				return -EINVAL;
 | 
									return -EINVAL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			err = amdgpu_ucode_request(adev, &adev->pm.fw, fw_name);
 | 
								err = amdgpu_ucode_request(adev, &adev->pm.fw, "%s", fw_name);
 | 
				
			||||||
			if (err) {
 | 
								if (err) {
 | 
				
			||||||
				DRM_ERROR("Failed to load firmware \"%s\"", fw_name);
 | 
									DRM_ERROR("Failed to load firmware \"%s\"", fw_name);
 | 
				
			||||||
				amdgpu_ucode_release(&adev->pm.fw);
 | 
									amdgpu_ucode_release(&adev->pm.fw);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1514,7 +1514,7 @@ int amdgpu_mes_init_microcode(struct amdgpu_device *adev, int pipe)
 | 
				
			||||||
			 pipe == AMDGPU_MES_SCHED_PIPE ? "" : "1");
 | 
								 pipe == AMDGPU_MES_SCHED_PIPE ? "" : "1");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe], fw_name);
 | 
						r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe], "%s", fw_name);
 | 
				
			||||||
	if (r && need_retry && pipe == AMDGPU_MES_SCHED_PIPE) {
 | 
						if (r && need_retry && pipe == AMDGPU_MES_SCHED_PIPE) {
 | 
				
			||||||
		dev_info(adev->dev, "try to fall back to %s_mes.bin\n", ucode_prefix);
 | 
							dev_info(adev->dev, "try to fall back to %s_mes.bin\n", ucode_prefix);
 | 
				
			||||||
		r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe],
 | 
							r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -587,7 +587,7 @@ int amdgpu_umsch_mm_init_microcode(struct amdgpu_umsch_mm *umsch)
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_ucode_request(adev, &adev->umsch_mm.fw, fw_name);
 | 
						r = amdgpu_ucode_request(adev, &adev->umsch_mm.fw, "%s", fw_name);
 | 
				
			||||||
	if (r) {
 | 
						if (r) {
 | 
				
			||||||
		release_firmware(adev->umsch_mm.fw);
 | 
							release_firmware(adev->umsch_mm.fw);
 | 
				
			||||||
		adev->umsch_mm.fw = NULL;
 | 
							adev->umsch_mm.fw = NULL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -260,7 +260,7 @@ int amdgpu_uvd_sw_init(struct amdgpu_device *adev)
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_ucode_request(adev, &adev->uvd.fw, fw_name);
 | 
						r = amdgpu_ucode_request(adev, &adev->uvd.fw, "%s", fw_name);
 | 
				
			||||||
	if (r) {
 | 
						if (r) {
 | 
				
			||||||
		dev_err(adev->dev, "amdgpu_uvd: Can't validate firmware \"%s\"\n",
 | 
							dev_err(adev->dev, "amdgpu_uvd: Can't validate firmware \"%s\"\n",
 | 
				
			||||||
			fw_name);
 | 
								fw_name);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -158,7 +158,7 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_ucode_request(adev, &adev->vce.fw, fw_name);
 | 
						r = amdgpu_ucode_request(adev, &adev->vce.fw, "%s", fw_name);
 | 
				
			||||||
	if (r) {
 | 
						if (r) {
 | 
				
			||||||
		dev_err(adev->dev, "amdgpu_vce: Can't validate firmware \"%s\"\n",
 | 
							dev_err(adev->dev, "amdgpu_vce: Can't validate firmware \"%s\"\n",
 | 
				
			||||||
			fw_name);
 | 
								fw_name);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2220,7 +2220,7 @@ static int load_dmcu_fw(struct amdgpu_device *adev)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, fw_name_dmcu);
 | 
						r = amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, "%s", fw_name_dmcu);
 | 
				
			||||||
	if (r == -ENODEV) {
 | 
						if (r == -ENODEV) {
 | 
				
			||||||
		/* DMCU firmware is not necessary, so don't raise a fuss if it's missing */
 | 
							/* DMCU firmware is not necessary, so don't raise a fuss if it's missing */
 | 
				
			||||||
		DRM_DEBUG_KMS("dm: DMCU firmware not found\n");
 | 
							DRM_DEBUG_KMS("dm: DMCU firmware not found\n");
 | 
				
			||||||
| 
						 | 
					@ -5157,7 +5157,7 @@ static int dm_init_microcode(struct amdgpu_device *adev)
 | 
				
			||||||
		/* ASIC doesn't support DMUB. */
 | 
							/* ASIC doesn't support DMUB. */
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	r = amdgpu_ucode_request(adev, &adev->dm.dmub_fw, fw_name_dmub);
 | 
						r = amdgpu_ucode_request(adev, &adev->dm.dmub_fw, "%s", fw_name_dmub);
 | 
				
			||||||
	return r;
 | 
						return r;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue