From nobody Tue Dec 16 17:46:44 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C39E57CF39 for ; Fri, 19 Jul 2024 10:09:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721383777; cv=none; b=RdKUdhnkuQCtAfAtSWHWIIxzGacccnzBw/xWiWob5mkRGebKivlWOp6Wzsm4fZjw+qaed963khReDfMdQALRriz+Gnhi1HBNQF1CYN2O8uFp07d5gkD/W5jnxySO7n1+vms/gnJ4/adxLvX0ShVks2xs38buYvnYvGnLAXPmcvs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721383777; c=relaxed/simple; bh=LnprOpQKJebgHBLc3MRc+ciaLm/ZxS3i/QrqnzrELrw=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=oZ2w4dFHLbe2ycxaQzI8sQzouo5Xd6OS8kKrT2m7ss2Zl8B20+m5GKBx85W9hFPjM7LlAFLPcM9/xs3cvtGgnmWeZFQ7ULty9qwD/x3+MKR6HJ+pgfDN/mQXin3e8tw7SUxJuS9JKjxC/lG+ZkLdBNjE08p6lcuOpm2ZfOn6Dsw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ko4M6Yhs; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ko4M6Yhs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 65670C32782; Fri, 19 Jul 2024 10:09:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721383777; bh=LnprOpQKJebgHBLc3MRc+ciaLm/ZxS3i/QrqnzrELrw=; h=From:To:Cc:Subject:Date:From; b=ko4M6YhsG3I1WkWIGxaERB1sFtkbU4OUzQkOTmCejfMWjmvaWrr7032GvDkSoQi3T 3FZ3nUznUN5+X/HZ2IMKgSnebyYGuJEreAVOlEwpYQJk8xVrcBSV+W/63lsRE62/i2 DO/RUMfSj4mnKOlx89GX/8uSJBmyAqSAFOeHNJxvgywJhj5gztZWSk+6ElyUKdx+ad 6NQF0+ONz71lM/QB3M7XT9z1IjrFeemU5DFOB4xMoQBOqK+uEQJpicdOTdnbp/g0BF rTVLU5kwiwh9JVWcz+5BCbgh2KRYgoRqEAiFjX8KlLx0OYVdGUc4ex4hjbmluA7Js7 L5pMEMDB1/1zg== From: Arnd Bergmann To: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Xinhui Pan , David Airlie , Daniel Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Lijo Lazar , Mario Limonciello Cc: Arnd Bergmann , Srinivasan Shanmugam , Alex Hung , Hamza Mahfooz , Roman Li , Wayne Lin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/amd: Use a constant format string for amdgpu_ucode_request Date: Fri, 19 Jul 2024 12:08:28 +0200 Message-Id: <20240719100929.94365-1-arnd@kernel.org> X-Mailer: git-send-email 2.39.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann 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_micro= code': drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c:1517:61: error: format not a string= literal and no format arguments [-Werror=3Dformat-security] 1517 | r =3D amdgpu_ucode_request(adev, &adev->mes.fw[pipe], fw_na= me); | ^~~~~~~ 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 l= iteral and no format arguments [-Werror=3Dformat-security] 263 | r =3D 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 l= iteral and no format arguments [-Werror=3Dformat-security] 161 | r =3D 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 str= ing literal and no format arguments [-Werror=3Dformat-security] 590 | r =3D amdgpu_ucode_request(adev, &adev->umsch_mm.fw, fw_nam= e); | ^ drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c: In function 'amdgpu_cgs_get_firmwa= re_info': drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c:417:72: error: format not a string = literal and no format arguments [-Werror=3Dformat-security] 417 | err =3D amdgpu_ucode_request(adev, &adev->p= m.fw, fw_name); | = ^~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c: In function 'l= oad_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=3Dformat-secur= ity] 2221 | r =3D amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, fw_name= _dmcu); | ^ drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c: In function 'd= m_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=3Dformat-secur= ity] 5147 | r =3D 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: e5a7d047f41b ("drm/amd: Use `amdgpu_ucode_*` helpers for CGS") Fixes: 52215e2a5d4a ("drm/amd: Use `amdgpu_ucode_*` helpers for VCE") Signed-off-by: Arnd Bergmann --- drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 2 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_cgs.c index c3d89088123d..16153d275d7a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c @@ -414,7 +414,7 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_devi= ce *cgs_device, return -EINVAL; } =20 - err =3D amdgpu_ucode_request(adev, &adev->pm.fw, fw_name); + err =3D amdgpu_ucode_request(adev, &adev->pm.fw, "%s", fw_name); if (err) { DRM_ERROR("Failed to load firmware \"%s\"", fw_name); amdgpu_ucode_release(&adev->pm.fw); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_mes.c index e499d6ba306b..5d89a9a6f910 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c @@ -1514,7 +1514,7 @@ int amdgpu_mes_init_microcode(struct amdgpu_device *a= dev, int pipe) pipe =3D=3D AMDGPU_MES_SCHED_PIPE ? "" : "1"); } =20 - r =3D amdgpu_ucode_request(adev, &adev->mes.fw[pipe], fw_name); + r =3D amdgpu_ucode_request(adev, &adev->mes.fw[pipe], "%s", fw_name); if (r && need_retry && pipe =3D=3D AMDGPU_MES_SCHED_PIPE) { dev_info(adev->dev, "try to fall back to %s_mes.bin\n", ucode_prefix); r =3D amdgpu_ucode_request(adev, &adev->mes.fw[pipe], diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c b/drivers/gpu/drm= /amd/amdgpu/amdgpu_umsch_mm.c index fbc2852278e1..6162582d0aa2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c @@ -587,7 +587,7 @@ int amdgpu_umsch_mm_init_microcode(struct amdgpu_umsch_= mm *umsch) break; } =20 - r =3D amdgpu_ucode_request(adev, &adev->umsch_mm.fw, fw_name); + r =3D amdgpu_ucode_request(adev, &adev->umsch_mm.fw, "%s", fw_name); if (r) { release_firmware(adev->umsch_mm.fw); adev->umsch_mm.fw =3D NULL; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_uvd.c index 07d930339b07..775c09d57222 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@ -260,7 +260,7 @@ int amdgpu_uvd_sw_init(struct amdgpu_device *adev) return -EINVAL; } =20 - r =3D amdgpu_ucode_request(adev, &adev->uvd.fw, fw_name); + r =3D amdgpu_ucode_request(adev, &adev->uvd.fw, "%s", fw_name); if (r) { dev_err(adev->dev, "amdgpu_uvd: Can't validate firmware \"%s\"\n", fw_name); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_vce.c index 968ca2c84ef7..51b045de409d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c @@ -158,7 +158,7 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsi= gned long size) return -EINVAL; } =20 - r =3D amdgpu_ucode_request(adev, &adev->vce.fw, fw_name); + r =3D amdgpu_ucode_request(adev, &adev->vce.fw, "%s", fw_name); if (r) { dev_err(adev->dev, "amdgpu_vce: Can't validate firmware \"%s\"\n", fw_name); diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 7e7929f24ae4..80b7dc651f6b 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -2218,7 +2218,7 @@ static int load_dmcu_fw(struct amdgpu_device *adev) return 0; } =20 - r =3D amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, fw_name_dmcu); + r =3D amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, "%s", fw_name_dmcu); if (r =3D=3D -ENODEV) { /* DMCU firmware is not necessary, so don't raise a fuss if it's missing= */ DRM_DEBUG_KMS("dm: DMCU firmware not found\n"); @@ -5144,7 +5144,7 @@ static int dm_init_microcode(struct amdgpu_device *ad= ev) /* ASIC doesn't support DMUB. */ return 0; } - r =3D amdgpu_ucode_request(adev, &adev->dm.dmub_fw, fw_name_dmub); + r =3D amdgpu_ucode_request(adev, &adev->dm.dmub_fw, "%s", fw_name_dmub); return r; } =20 --=20 2.39.2