* [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 9:37 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-06-24 9:37 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: amd-gfx, dri-devel, linux-kernel, Vojtech Pavlik
From: Jiri Kosina <jkosina@suse.cz>
In case when psp_init_asd_microcode() fails to load ASD microcode file,
psp_v12_0_init_microcode() tries to print the firmware filename that
failed to load before bailing out.
This is wrong because:
- the firmware filename it would want it print is an incorrect one as
psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
different filenames
- it tries to print fw_name, but that's not yet been initialized by that
time, so it prints random stack contents, e.g.
amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
Fix that by bailing out immediately, instead of priting the bogus error
message.
Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
index c4828bd3264b..5b21e22ad4b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
@@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
err = psp_init_asd_microcode(psp, chip_name);
if (err)
- goto out;
+ return err;
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
--
2.12.3
--
Jiri Kosina
SUSE Labs
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 9:37 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-06-24 9:37 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: Vojtech Pavlik, dri-devel, amd-gfx, linux-kernel
From: Jiri Kosina <jkosina@suse.cz>
In case when psp_init_asd_microcode() fails to load ASD microcode file,
psp_v12_0_init_microcode() tries to print the firmware filename that
failed to load before bailing out.
This is wrong because:
- the firmware filename it would want it print is an incorrect one as
psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
different filenames
- it tries to print fw_name, but that's not yet been initialized by that
time, so it prints random stack contents, e.g.
amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
Fix that by bailing out immediately, instead of priting the bogus error
message.
Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
index c4828bd3264b..5b21e22ad4b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
@@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
err = psp_init_asd_microcode(psp, chip_name);
if (err)
- goto out;
+ return err;
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
--
2.12.3
--
Jiri Kosina
SUSE Labs
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 9:37 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-06-24 9:37 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: Vojtech Pavlik, dri-devel, amd-gfx, linux-kernel
From: Jiri Kosina <jkosina@suse.cz>
In case when psp_init_asd_microcode() fails to load ASD microcode file,
psp_v12_0_init_microcode() tries to print the firmware filename that
failed to load before bailing out.
This is wrong because:
- the firmware filename it would want it print is an incorrect one as
psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
different filenames
- it tries to print fw_name, but that's not yet been initialized by that
time, so it prints random stack contents, e.g.
amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
Fix that by bailing out immediately, instead of priting the bogus error
message.
Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
index c4828bd3264b..5b21e22ad4b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
@@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
err = psp_init_asd_microcode(psp, chip_name);
if (err)
- goto out;
+ return err;
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
--
2.12.3
--
Jiri Kosina
SUSE Labs
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
[not found] ` <YNRnDTD1fdpZOXB8@suse.com>
2021-06-24 11:11 ` Jiri Kosina
@ 2021-06-24 11:11 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-06-24 11:11 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: amd-gfx, dri-devel, linux-kernel, Vojtech Pavlik
From: Jiri Kosina <jkosina@suse.cz>
In case when psp_init_asd_microcode() fails to load ASD microcode file,
psp_v12_0_init_microcode() tries to print the firmware filename that
failed to load before bailing out.
This is wrong because:
- the firmware filename it would want it print is an incorrect one as
psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
different filenames
- it tries to print fw_name, but that's not yet been initialized by that
time, so it prints random stack contents, e.g.
amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
Fix that by bailing out immediately, instead of priting the bogus error
message.
Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
v1 -> v2: remove now-unused label
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
index c4828bd3264b..b0ee77ee80b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
@@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
err = psp_init_asd_microcode(psp, chip_name);
if (err)
- goto out;
+ return err;
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
@@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
} else {
err = amdgpu_ucode_validate(adev->psp.ta_fw);
if (err)
- goto out2;
+ goto out;
ta_hdr = (const struct ta_firmware_header_v1_0 *)
adev->psp.ta_fw->data;
@@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
return 0;
-out2:
+out:
release_firmware(adev->psp.ta_fw);
adev->psp.ta_fw = NULL;
-out:
if (err) {
dev_err(adev->dev,
"psp v12.0: Failed to load firmware \"%s\"\n",
--
2.12.3
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 11:11 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-06-24 11:11 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: Vojtech Pavlik, dri-devel, amd-gfx, linux-kernel
From: Jiri Kosina <jkosina@suse.cz>
In case when psp_init_asd_microcode() fails to load ASD microcode file,
psp_v12_0_init_microcode() tries to print the firmware filename that
failed to load before bailing out.
This is wrong because:
- the firmware filename it would want it print is an incorrect one as
psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
different filenames
- it tries to print fw_name, but that's not yet been initialized by that
time, so it prints random stack contents, e.g.
amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
Fix that by bailing out immediately, instead of priting the bogus error
message.
Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
v1 -> v2: remove now-unused label
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
index c4828bd3264b..b0ee77ee80b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
@@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
err = psp_init_asd_microcode(psp, chip_name);
if (err)
- goto out;
+ return err;
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
@@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
} else {
err = amdgpu_ucode_validate(adev->psp.ta_fw);
if (err)
- goto out2;
+ goto out;
ta_hdr = (const struct ta_firmware_header_v1_0 *)
adev->psp.ta_fw->data;
@@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
return 0;
-out2:
+out:
release_firmware(adev->psp.ta_fw);
adev->psp.ta_fw = NULL;
-out:
if (err) {
dev_err(adev->dev,
"psp v12.0: Failed to load firmware \"%s\"\n",
--
2.12.3
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 11:11 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-06-24 11:11 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: Vojtech Pavlik, dri-devel, amd-gfx, linux-kernel
From: Jiri Kosina <jkosina@suse.cz>
In case when psp_init_asd_microcode() fails to load ASD microcode file,
psp_v12_0_init_microcode() tries to print the firmware filename that
failed to load before bailing out.
This is wrong because:
- the firmware filename it would want it print is an incorrect one as
psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
different filenames
- it tries to print fw_name, but that's not yet been initialized by that
time, so it prints random stack contents, e.g.
amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
Fix that by bailing out immediately, instead of priting the bogus error
message.
Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
v1 -> v2: remove now-unused label
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
index c4828bd3264b..b0ee77ee80b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
@@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
err = psp_init_asd_microcode(psp, chip_name);
if (err)
- goto out;
+ return err;
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
@@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
} else {
err = amdgpu_ucode_validate(adev->psp.ta_fw);
if (err)
- goto out2;
+ goto out;
ta_hdr = (const struct ta_firmware_header_v1_0 *)
adev->psp.ta_fw->data;
@@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
return 0;
-out2:
+out:
release_firmware(adev->psp.ta_fw);
adev->psp.ta_fw = NULL;
-out:
if (err) {
dev_err(adev->dev,
"psp v12.0: Failed to load firmware \"%s\"\n",
--
2.12.3
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
2021-06-24 9:37 ` Jiri Kosina
(?)
(?)
@ 2021-06-24 13:33 ` kernel test robot
-1 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2021-06-24 13:33 UTC (permalink / raw)
To: Jiri Kosina, Alex Deucher, Christian König, David Airlie
Cc: kbuild-all, clang-built-linux, amd-gfx, dri-devel, linux-kernel,
Vojtech Pavlik
[-- Attachment #1: Type: text/plain, Size: 7186 bytes --]
Hi Jiri,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.13-rc7 next-20210624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7426cedc7dad67bf3c71ea6cc29ab7822e1a453f
config: arm64-randconfig-r006-20210622 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 7c8a507272587f181ec29401453949ebcd8fec65)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/f9d4f2041c2724ff3c9126761199d37acede1187
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
git checkout f9d4f2041c2724ff3c9126761199d37acede1187
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c:111:1: warning: unused label 'out' [-Wunused-label]
out:
^~~~
1 warning generated.
vim +/out +111 drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 47
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 48 static int psp_v12_0_init_microcode(struct psp_context *psp)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 49 {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 50 struct amdgpu_device *adev = psp->adev;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 51 const char *chip_name;
6627d1c1a82ba7 Changfeng 2020-09-01 52 char fw_name[30];
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 53 int err = 0;
6627d1c1a82ba7 Changfeng 2020-09-01 54 const struct ta_firmware_header_v1_0 *ta_hdr;
6627d1c1a82ba7 Changfeng 2020-09-01 55 DRM_DEBUG("\n");
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 56
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 57 switch (adev->asic_type) {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 58 case CHIP_RENOIR:
68697982204b21 Aaron Liu 2020-10-01 59 if (adev->apu_flags & AMD_APU_IS_RENOIR)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 60 chip_name = "renoir";
68697982204b21 Aaron Liu 2020-10-01 61 else
68697982204b21 Aaron Liu 2020-10-01 62 chip_name = "green_sardine";
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 63 break;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 64 default:
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 65 BUG();
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 66 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 67
f4503f9eb3a16c Hawking Zhang 2020-04-20 68 err = psp_init_asd_microcode(psp, chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 69 if (err)
f9d4f2041c2724 Jiri Kosina 2021-06-24 70 return err;
6627d1c1a82ba7 Changfeng 2020-09-01 71
6627d1c1a82ba7 Changfeng 2020-09-01 72 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 73 err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
6627d1c1a82ba7 Changfeng 2020-09-01 74 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 75 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 76 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 77 dev_info(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 78 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 79 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 80 } else {
6627d1c1a82ba7 Changfeng 2020-09-01 81 err = amdgpu_ucode_validate(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 82 if (err)
6627d1c1a82ba7 Changfeng 2020-09-01 83 goto out2;
6627d1c1a82ba7 Changfeng 2020-09-01 84
6627d1c1a82ba7 Changfeng 2020-09-01 85 ta_hdr = (const struct ta_firmware_header_v1_0 *)
6627d1c1a82ba7 Changfeng 2020-09-01 86 adev->psp.ta_fw->data;
6627d1c1a82ba7 Changfeng 2020-09-01 87 adev->psp.ta_hdcp_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 88 le32_to_cpu(ta_hdr->ta_hdcp_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 89 adev->psp.ta_hdcp_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 90 le32_to_cpu(ta_hdr->ta_hdcp_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 91 adev->psp.ta_hdcp_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 92 (uint8_t *)ta_hdr +
6627d1c1a82ba7 Changfeng 2020-09-01 93 le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 94
6627d1c1a82ba7 Changfeng 2020-09-01 95 adev->psp.ta_fw_version = le32_to_cpu(ta_hdr->header.ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 96
6627d1c1a82ba7 Changfeng 2020-09-01 97 adev->psp.ta_dtm_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 98 le32_to_cpu(ta_hdr->ta_dtm_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 99 adev->psp.ta_dtm_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 100 le32_to_cpu(ta_hdr->ta_dtm_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 101 adev->psp.ta_dtm_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 102 (uint8_t *)adev->psp.ta_hdcp_start_addr +
6627d1c1a82ba7 Changfeng 2020-09-01 103 le32_to_cpu(ta_hdr->ta_dtm_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 104 }
6627d1c1a82ba7 Changfeng 2020-09-01 105
6627d1c1a82ba7 Changfeng 2020-09-01 106 return 0;
6627d1c1a82ba7 Changfeng 2020-09-01 107
6627d1c1a82ba7 Changfeng 2020-09-01 108 out2:
6627d1c1a82ba7 Changfeng 2020-09-01 109 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 110 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 @111 out:
6627d1c1a82ba7 Changfeng 2020-09-01 112 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 113 dev_err(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 114 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 115 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 116 }
6627d1c1a82ba7 Changfeng 2020-09-01 117
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 118 return err;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 119 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 120
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 36903 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 13:33 ` kernel test robot
0 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2021-06-24 13:33 UTC (permalink / raw)
To: Jiri Kosina, Alex Deucher, Christian König, David Airlie
Cc: kbuild-all, Vojtech Pavlik, linux-kernel, dri-devel,
clang-built-linux, amd-gfx
[-- Attachment #1: Type: text/plain, Size: 7186 bytes --]
Hi Jiri,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.13-rc7 next-20210624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7426cedc7dad67bf3c71ea6cc29ab7822e1a453f
config: arm64-randconfig-r006-20210622 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 7c8a507272587f181ec29401453949ebcd8fec65)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/f9d4f2041c2724ff3c9126761199d37acede1187
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
git checkout f9d4f2041c2724ff3c9126761199d37acede1187
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c:111:1: warning: unused label 'out' [-Wunused-label]
out:
^~~~
1 warning generated.
vim +/out +111 drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 47
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 48 static int psp_v12_0_init_microcode(struct psp_context *psp)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 49 {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 50 struct amdgpu_device *adev = psp->adev;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 51 const char *chip_name;
6627d1c1a82ba7 Changfeng 2020-09-01 52 char fw_name[30];
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 53 int err = 0;
6627d1c1a82ba7 Changfeng 2020-09-01 54 const struct ta_firmware_header_v1_0 *ta_hdr;
6627d1c1a82ba7 Changfeng 2020-09-01 55 DRM_DEBUG("\n");
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 56
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 57 switch (adev->asic_type) {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 58 case CHIP_RENOIR:
68697982204b21 Aaron Liu 2020-10-01 59 if (adev->apu_flags & AMD_APU_IS_RENOIR)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 60 chip_name = "renoir";
68697982204b21 Aaron Liu 2020-10-01 61 else
68697982204b21 Aaron Liu 2020-10-01 62 chip_name = "green_sardine";
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 63 break;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 64 default:
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 65 BUG();
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 66 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 67
f4503f9eb3a16c Hawking Zhang 2020-04-20 68 err = psp_init_asd_microcode(psp, chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 69 if (err)
f9d4f2041c2724 Jiri Kosina 2021-06-24 70 return err;
6627d1c1a82ba7 Changfeng 2020-09-01 71
6627d1c1a82ba7 Changfeng 2020-09-01 72 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 73 err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
6627d1c1a82ba7 Changfeng 2020-09-01 74 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 75 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 76 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 77 dev_info(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 78 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 79 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 80 } else {
6627d1c1a82ba7 Changfeng 2020-09-01 81 err = amdgpu_ucode_validate(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 82 if (err)
6627d1c1a82ba7 Changfeng 2020-09-01 83 goto out2;
6627d1c1a82ba7 Changfeng 2020-09-01 84
6627d1c1a82ba7 Changfeng 2020-09-01 85 ta_hdr = (const struct ta_firmware_header_v1_0 *)
6627d1c1a82ba7 Changfeng 2020-09-01 86 adev->psp.ta_fw->data;
6627d1c1a82ba7 Changfeng 2020-09-01 87 adev->psp.ta_hdcp_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 88 le32_to_cpu(ta_hdr->ta_hdcp_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 89 adev->psp.ta_hdcp_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 90 le32_to_cpu(ta_hdr->ta_hdcp_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 91 adev->psp.ta_hdcp_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 92 (uint8_t *)ta_hdr +
6627d1c1a82ba7 Changfeng 2020-09-01 93 le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 94
6627d1c1a82ba7 Changfeng 2020-09-01 95 adev->psp.ta_fw_version = le32_to_cpu(ta_hdr->header.ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 96
6627d1c1a82ba7 Changfeng 2020-09-01 97 adev->psp.ta_dtm_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 98 le32_to_cpu(ta_hdr->ta_dtm_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 99 adev->psp.ta_dtm_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 100 le32_to_cpu(ta_hdr->ta_dtm_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 101 adev->psp.ta_dtm_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 102 (uint8_t *)adev->psp.ta_hdcp_start_addr +
6627d1c1a82ba7 Changfeng 2020-09-01 103 le32_to_cpu(ta_hdr->ta_dtm_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 104 }
6627d1c1a82ba7 Changfeng 2020-09-01 105
6627d1c1a82ba7 Changfeng 2020-09-01 106 return 0;
6627d1c1a82ba7 Changfeng 2020-09-01 107
6627d1c1a82ba7 Changfeng 2020-09-01 108 out2:
6627d1c1a82ba7 Changfeng 2020-09-01 109 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 110 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 @111 out:
6627d1c1a82ba7 Changfeng 2020-09-01 112 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 113 dev_err(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 114 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 115 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 116 }
6627d1c1a82ba7 Changfeng 2020-09-01 117
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 118 return err;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 119 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 120
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 36903 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 13:33 ` kernel test robot
0 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2021-06-24 13:33 UTC (permalink / raw)
To: Jiri Kosina, Alex Deucher, Christian König, David Airlie
Cc: kbuild-all, Vojtech Pavlik, linux-kernel, dri-devel,
clang-built-linux, amd-gfx
[-- Attachment #1: Type: text/plain, Size: 7186 bytes --]
Hi Jiri,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.13-rc7 next-20210624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7426cedc7dad67bf3c71ea6cc29ab7822e1a453f
config: arm64-randconfig-r006-20210622 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 7c8a507272587f181ec29401453949ebcd8fec65)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/f9d4f2041c2724ff3c9126761199d37acede1187
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
git checkout f9d4f2041c2724ff3c9126761199d37acede1187
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c:111:1: warning: unused label 'out' [-Wunused-label]
out:
^~~~
1 warning generated.
vim +/out +111 drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 47
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 48 static int psp_v12_0_init_microcode(struct psp_context *psp)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 49 {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 50 struct amdgpu_device *adev = psp->adev;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 51 const char *chip_name;
6627d1c1a82ba7 Changfeng 2020-09-01 52 char fw_name[30];
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 53 int err = 0;
6627d1c1a82ba7 Changfeng 2020-09-01 54 const struct ta_firmware_header_v1_0 *ta_hdr;
6627d1c1a82ba7 Changfeng 2020-09-01 55 DRM_DEBUG("\n");
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 56
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 57 switch (adev->asic_type) {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 58 case CHIP_RENOIR:
68697982204b21 Aaron Liu 2020-10-01 59 if (adev->apu_flags & AMD_APU_IS_RENOIR)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 60 chip_name = "renoir";
68697982204b21 Aaron Liu 2020-10-01 61 else
68697982204b21 Aaron Liu 2020-10-01 62 chip_name = "green_sardine";
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 63 break;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 64 default:
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 65 BUG();
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 66 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 67
f4503f9eb3a16c Hawking Zhang 2020-04-20 68 err = psp_init_asd_microcode(psp, chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 69 if (err)
f9d4f2041c2724 Jiri Kosina 2021-06-24 70 return err;
6627d1c1a82ba7 Changfeng 2020-09-01 71
6627d1c1a82ba7 Changfeng 2020-09-01 72 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 73 err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
6627d1c1a82ba7 Changfeng 2020-09-01 74 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 75 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 76 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 77 dev_info(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 78 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 79 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 80 } else {
6627d1c1a82ba7 Changfeng 2020-09-01 81 err = amdgpu_ucode_validate(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 82 if (err)
6627d1c1a82ba7 Changfeng 2020-09-01 83 goto out2;
6627d1c1a82ba7 Changfeng 2020-09-01 84
6627d1c1a82ba7 Changfeng 2020-09-01 85 ta_hdr = (const struct ta_firmware_header_v1_0 *)
6627d1c1a82ba7 Changfeng 2020-09-01 86 adev->psp.ta_fw->data;
6627d1c1a82ba7 Changfeng 2020-09-01 87 adev->psp.ta_hdcp_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 88 le32_to_cpu(ta_hdr->ta_hdcp_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 89 adev->psp.ta_hdcp_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 90 le32_to_cpu(ta_hdr->ta_hdcp_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 91 adev->psp.ta_hdcp_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 92 (uint8_t *)ta_hdr +
6627d1c1a82ba7 Changfeng 2020-09-01 93 le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 94
6627d1c1a82ba7 Changfeng 2020-09-01 95 adev->psp.ta_fw_version = le32_to_cpu(ta_hdr->header.ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 96
6627d1c1a82ba7 Changfeng 2020-09-01 97 adev->psp.ta_dtm_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 98 le32_to_cpu(ta_hdr->ta_dtm_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 99 adev->psp.ta_dtm_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 100 le32_to_cpu(ta_hdr->ta_dtm_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 101 adev->psp.ta_dtm_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 102 (uint8_t *)adev->psp.ta_hdcp_start_addr +
6627d1c1a82ba7 Changfeng 2020-09-01 103 le32_to_cpu(ta_hdr->ta_dtm_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 104 }
6627d1c1a82ba7 Changfeng 2020-09-01 105
6627d1c1a82ba7 Changfeng 2020-09-01 106 return 0;
6627d1c1a82ba7 Changfeng 2020-09-01 107
6627d1c1a82ba7 Changfeng 2020-09-01 108 out2:
6627d1c1a82ba7 Changfeng 2020-09-01 109 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 110 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 @111 out:
6627d1c1a82ba7 Changfeng 2020-09-01 112 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 113 dev_err(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 114 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 115 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 116 }
6627d1c1a82ba7 Changfeng 2020-09-01 117
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 118 return err;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 119 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 120
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 36903 bytes --]
[-- Attachment #3: Type: text/plain, Size: 154 bytes --]
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-06-24 13:33 ` kernel test robot
0 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2021-06-24 13:33 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 7305 bytes --]
Hi Jiri,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.13-rc7 next-20210624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7426cedc7dad67bf3c71ea6cc29ab7822e1a453f
config: arm64-randconfig-r006-20210622 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 7c8a507272587f181ec29401453949ebcd8fec65)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/f9d4f2041c2724ff3c9126761199d37acede1187
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jiri-Kosina/drm-amdgpu-Avoid-printing-of-stack-contents-on-firmware-load-error/20210624-173740
git checkout f9d4f2041c2724ff3c9126761199d37acede1187
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c:111:1: warning: unused label 'out' [-Wunused-label]
out:
^~~~
1 warning generated.
vim +/out +111 drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 47
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 48 static int psp_v12_0_init_microcode(struct psp_context *psp)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 49 {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 50 struct amdgpu_device *adev = psp->adev;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 51 const char *chip_name;
6627d1c1a82ba7 Changfeng 2020-09-01 52 char fw_name[30];
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 53 int err = 0;
6627d1c1a82ba7 Changfeng 2020-09-01 54 const struct ta_firmware_header_v1_0 *ta_hdr;
6627d1c1a82ba7 Changfeng 2020-09-01 55 DRM_DEBUG("\n");
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 56
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 57 switch (adev->asic_type) {
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 58 case CHIP_RENOIR:
68697982204b21 Aaron Liu 2020-10-01 59 if (adev->apu_flags & AMD_APU_IS_RENOIR)
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 60 chip_name = "renoir";
68697982204b21 Aaron Liu 2020-10-01 61 else
68697982204b21 Aaron Liu 2020-10-01 62 chip_name = "green_sardine";
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 63 break;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 64 default:
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 65 BUG();
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 66 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 67
f4503f9eb3a16c Hawking Zhang 2020-04-20 68 err = psp_init_asd_microcode(psp, chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 69 if (err)
f9d4f2041c2724 Jiri Kosina 2021-06-24 70 return err;
6627d1c1a82ba7 Changfeng 2020-09-01 71
6627d1c1a82ba7 Changfeng 2020-09-01 72 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
6627d1c1a82ba7 Changfeng 2020-09-01 73 err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
6627d1c1a82ba7 Changfeng 2020-09-01 74 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 75 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 76 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 77 dev_info(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 78 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 79 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 80 } else {
6627d1c1a82ba7 Changfeng 2020-09-01 81 err = amdgpu_ucode_validate(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 82 if (err)
6627d1c1a82ba7 Changfeng 2020-09-01 83 goto out2;
6627d1c1a82ba7 Changfeng 2020-09-01 84
6627d1c1a82ba7 Changfeng 2020-09-01 85 ta_hdr = (const struct ta_firmware_header_v1_0 *)
6627d1c1a82ba7 Changfeng 2020-09-01 86 adev->psp.ta_fw->data;
6627d1c1a82ba7 Changfeng 2020-09-01 87 adev->psp.ta_hdcp_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 88 le32_to_cpu(ta_hdr->ta_hdcp_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 89 adev->psp.ta_hdcp_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 90 le32_to_cpu(ta_hdr->ta_hdcp_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 91 adev->psp.ta_hdcp_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 92 (uint8_t *)ta_hdr +
6627d1c1a82ba7 Changfeng 2020-09-01 93 le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 94
6627d1c1a82ba7 Changfeng 2020-09-01 95 adev->psp.ta_fw_version = le32_to_cpu(ta_hdr->header.ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 96
6627d1c1a82ba7 Changfeng 2020-09-01 97 adev->psp.ta_dtm_ucode_version =
6627d1c1a82ba7 Changfeng 2020-09-01 98 le32_to_cpu(ta_hdr->ta_dtm_ucode_version);
6627d1c1a82ba7 Changfeng 2020-09-01 99 adev->psp.ta_dtm_ucode_size =
6627d1c1a82ba7 Changfeng 2020-09-01 100 le32_to_cpu(ta_hdr->ta_dtm_size_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 101 adev->psp.ta_dtm_start_addr =
6627d1c1a82ba7 Changfeng 2020-09-01 102 (uint8_t *)adev->psp.ta_hdcp_start_addr +
6627d1c1a82ba7 Changfeng 2020-09-01 103 le32_to_cpu(ta_hdr->ta_dtm_offset_bytes);
6627d1c1a82ba7 Changfeng 2020-09-01 104 }
6627d1c1a82ba7 Changfeng 2020-09-01 105
6627d1c1a82ba7 Changfeng 2020-09-01 106 return 0;
6627d1c1a82ba7 Changfeng 2020-09-01 107
6627d1c1a82ba7 Changfeng 2020-09-01 108 out2:
6627d1c1a82ba7 Changfeng 2020-09-01 109 release_firmware(adev->psp.ta_fw);
6627d1c1a82ba7 Changfeng 2020-09-01 110 adev->psp.ta_fw = NULL;
6627d1c1a82ba7 Changfeng 2020-09-01 @111 out:
6627d1c1a82ba7 Changfeng 2020-09-01 112 if (err) {
6627d1c1a82ba7 Changfeng 2020-09-01 113 dev_err(adev->dev,
6627d1c1a82ba7 Changfeng 2020-09-01 114 "psp v12.0: Failed to load firmware \"%s\"\n",
6627d1c1a82ba7 Changfeng 2020-09-01 115 fw_name);
6627d1c1a82ba7 Changfeng 2020-09-01 116 }
6627d1c1a82ba7 Changfeng 2020-09-01 117
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 118 return err;
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 119 }
6a7a0bdbfa0c24 Aaron Liu 2019-08-09 120
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36903 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
2021-06-24 11:11 ` Jiri Kosina
(?)
@ 2021-07-01 8:33 ` Jiri Kosina
-1 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-07-01 8:33 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: amd-gfx, dri-devel, linux-kernel, Vojtech Pavlik
On Thu, 24 Jun 2021, Jiri Kosina wrote:
> From: Jiri Kosina <jkosina@suse.cz>
>
> In case when psp_init_asd_microcode() fails to load ASD microcode file,
> psp_v12_0_init_microcode() tries to print the firmware filename that
> failed to load before bailing out.
>
> This is wrong because:
>
> - the firmware filename it would want it print is an incorrect one as
> psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
> different filenames
> - it tries to print fw_name, but that's not yet been initialized by that
> time, so it prints random stack contents, e.g.
>
> amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
> amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
> amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
>
> Fix that by bailing out immediately, instead of priting the bogus error
> message.
Friendly ping on this one too; priting a few bytes of stack is not a
*huge* info leak, but I believe it should be fixed nevertheless.
Thanks.
>
> Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
> ---
>
> v1 -> v2: remove now-unused label
>
> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> index c4828bd3264b..b0ee77ee80b9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> @@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
>
> err = psp_init_asd_microcode(psp, chip_name);
> if (err)
> - goto out;
> + return err;
>
> snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
> err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
> @@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> } else {
> err = amdgpu_ucode_validate(adev->psp.ta_fw);
> if (err)
> - goto out2;
> + goto out;
>
> ta_hdr = (const struct ta_firmware_header_v1_0 *)
> adev->psp.ta_fw->data;
> @@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
>
> return 0;
>
> -out2:
> +out:
> release_firmware(adev->psp.ta_fw);
> adev->psp.ta_fw = NULL;
> -out:
> if (err) {
> dev_err(adev->dev,
> "psp v12.0: Failed to load firmware \"%s\"\n",
> --
> 2.12.3
>
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-07-01 8:33 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-07-01 8:33 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: Vojtech Pavlik, dri-devel, amd-gfx, linux-kernel
On Thu, 24 Jun 2021, Jiri Kosina wrote:
> From: Jiri Kosina <jkosina@suse.cz>
>
> In case when psp_init_asd_microcode() fails to load ASD microcode file,
> psp_v12_0_init_microcode() tries to print the firmware filename that
> failed to load before bailing out.
>
> This is wrong because:
>
> - the firmware filename it would want it print is an incorrect one as
> psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
> different filenames
> - it tries to print fw_name, but that's not yet been initialized by that
> time, so it prints random stack contents, e.g.
>
> amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
> amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
> amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
>
> Fix that by bailing out immediately, instead of priting the bogus error
> message.
Friendly ping on this one too; priting a few bytes of stack is not a
*huge* info leak, but I believe it should be fixed nevertheless.
Thanks.
>
> Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
> ---
>
> v1 -> v2: remove now-unused label
>
> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> index c4828bd3264b..b0ee77ee80b9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> @@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
>
> err = psp_init_asd_microcode(psp, chip_name);
> if (err)
> - goto out;
> + return err;
>
> snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
> err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
> @@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> } else {
> err = amdgpu_ucode_validate(adev->psp.ta_fw);
> if (err)
> - goto out2;
> + goto out;
>
> ta_hdr = (const struct ta_firmware_header_v1_0 *)
> adev->psp.ta_fw->data;
> @@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
>
> return 0;
>
> -out2:
> +out:
> release_firmware(adev->psp.ta_fw);
> adev->psp.ta_fw = NULL;
> -out:
> if (err) {
> dev_err(adev->dev,
> "psp v12.0: Failed to load firmware \"%s\"\n",
> --
> 2.12.3
>
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-07-01 8:33 ` Jiri Kosina
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Kosina @ 2021-07-01 8:33 UTC (permalink / raw)
To: Alex Deucher, Christian König, David Airlie
Cc: Vojtech Pavlik, dri-devel, amd-gfx, linux-kernel
On Thu, 24 Jun 2021, Jiri Kosina wrote:
> From: Jiri Kosina <jkosina@suse.cz>
>
> In case when psp_init_asd_microcode() fails to load ASD microcode file,
> psp_v12_0_init_microcode() tries to print the firmware filename that
> failed to load before bailing out.
>
> This is wrong because:
>
> - the firmware filename it would want it print is an incorrect one as
> psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
> different filenames
> - it tries to print fw_name, but that's not yet been initialized by that
> time, so it prints random stack contents, e.g.
>
> amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
> amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
> amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
>
> Fix that by bailing out immediately, instead of priting the bogus error
> message.
Friendly ping on this one too; priting a few bytes of stack is not a
*huge* info leak, but I believe it should be fixed nevertheless.
Thanks.
>
> Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
> ---
>
> v1 -> v2: remove now-unused label
>
> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> index c4828bd3264b..b0ee77ee80b9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> @@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
>
> err = psp_init_asd_microcode(psp, chip_name);
> if (err)
> - goto out;
> + return err;
>
> snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
> err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
> @@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> } else {
> err = amdgpu_ucode_validate(adev->psp.ta_fw);
> if (err)
> - goto out2;
> + goto out;
>
> ta_hdr = (const struct ta_firmware_header_v1_0 *)
> adev->psp.ta_fw->data;
> @@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
>
> return 0;
>
> -out2:
> +out:
> release_firmware(adev->psp.ta_fw);
> adev->psp.ta_fw = NULL;
> -out:
> if (err) {
> dev_err(adev->dev,
> "psp v12.0: Failed to load firmware \"%s\"\n",
> --
> 2.12.3
>
--
Jiri Kosina
SUSE Labs
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
2021-07-01 8:33 ` Jiri Kosina
(?)
@ 2021-07-01 14:10 ` Alex Deucher
-1 siblings, 0 replies; 16+ messages in thread
From: Alex Deucher @ 2021-07-01 14:10 UTC (permalink / raw)
To: Jiri Kosina
Cc: Alex Deucher, Christian König, David Airlie, Vojtech Pavlik,
Maling list - DRI developers, amd-gfx list, LKML
Applied. Thanks!
Alex
On Thu, Jul 1, 2021 at 4:33 AM Jiri Kosina <jikos@kernel.org> wrote:
>
> On Thu, 24 Jun 2021, Jiri Kosina wrote:
>
> > From: Jiri Kosina <jkosina@suse.cz>
> >
> > In case when psp_init_asd_microcode() fails to load ASD microcode file,
> > psp_v12_0_init_microcode() tries to print the firmware filename that
> > failed to load before bailing out.
> >
> > This is wrong because:
> >
> > - the firmware filename it would want it print is an incorrect one as
> > psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
> > different filenames
> > - it tries to print fw_name, but that's not yet been initialized by that
> > time, so it prints random stack contents, e.g.
> >
> > amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
> > amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
> > amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
> >
> > Fix that by bailing out immediately, instead of priting the bogus error
> > message.
>
> Friendly ping on this one too; priting a few bytes of stack is not a
> *huge* info leak, but I believe it should be fixed nevertheless.
>
> Thanks.
>
> >
> > Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
> > Signed-off-by: Jiri Kosina <jkosina@suse.cz>
>
>
> > ---
> >
> > v1 -> v2: remove now-unused label
> >
> > drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > index c4828bd3264b..b0ee77ee80b9 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > @@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> >
> > err = psp_init_asd_microcode(psp, chip_name);
> > if (err)
> > - goto out;
> > + return err;
> >
> > snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
> > err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
> > @@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> > } else {
> > err = amdgpu_ucode_validate(adev->psp.ta_fw);
> > if (err)
> > - goto out2;
> > + goto out;
> >
> > ta_hdr = (const struct ta_firmware_header_v1_0 *)
> > adev->psp.ta_fw->data;
> > @@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> >
> > return 0;
> >
> > -out2:
> > +out:
> > release_firmware(adev->psp.ta_fw);
> > adev->psp.ta_fw = NULL;
> > -out:
> > if (err) {
> > dev_err(adev->dev,
> > "psp v12.0: Failed to load firmware \"%s\"\n",
> > --
> > 2.12.3
> >
>
> --
> Jiri Kosina
> SUSE Labs
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-07-01 14:10 ` Alex Deucher
0 siblings, 0 replies; 16+ messages in thread
From: Alex Deucher @ 2021-07-01 14:10 UTC (permalink / raw)
To: Jiri Kosina
Cc: David Airlie, Vojtech Pavlik, LKML, amd-gfx list,
Maling list - DRI developers, Alex Deucher, Christian König
Applied. Thanks!
Alex
On Thu, Jul 1, 2021 at 4:33 AM Jiri Kosina <jikos@kernel.org> wrote:
>
> On Thu, 24 Jun 2021, Jiri Kosina wrote:
>
> > From: Jiri Kosina <jkosina@suse.cz>
> >
> > In case when psp_init_asd_microcode() fails to load ASD microcode file,
> > psp_v12_0_init_microcode() tries to print the firmware filename that
> > failed to load before bailing out.
> >
> > This is wrong because:
> >
> > - the firmware filename it would want it print is an incorrect one as
> > psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
> > different filenames
> > - it tries to print fw_name, but that's not yet been initialized by that
> > time, so it prints random stack contents, e.g.
> >
> > amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
> > amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
> > amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
> >
> > Fix that by bailing out immediately, instead of priting the bogus error
> > message.
>
> Friendly ping on this one too; priting a few bytes of stack is not a
> *huge* info leak, but I believe it should be fixed nevertheless.
>
> Thanks.
>
> >
> > Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
> > Signed-off-by: Jiri Kosina <jkosina@suse.cz>
>
>
> > ---
> >
> > v1 -> v2: remove now-unused label
> >
> > drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > index c4828bd3264b..b0ee77ee80b9 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > @@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> >
> > err = psp_init_asd_microcode(psp, chip_name);
> > if (err)
> > - goto out;
> > + return err;
> >
> > snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
> > err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
> > @@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> > } else {
> > err = amdgpu_ucode_validate(adev->psp.ta_fw);
> > if (err)
> > - goto out2;
> > + goto out;
> >
> > ta_hdr = (const struct ta_firmware_header_v1_0 *)
> > adev->psp.ta_fw->data;
> > @@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> >
> > return 0;
> >
> > -out2:
> > +out:
> > release_firmware(adev->psp.ta_fw);
> > adev->psp.ta_fw = NULL;
> > -out:
> > if (err) {
> > dev_err(adev->dev,
> > "psp v12.0: Failed to load firmware \"%s\"\n",
> > --
> > 2.12.3
> >
>
> --
> Jiri Kosina
> SUSE Labs
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] drm/amdgpu: Avoid printing of stack contents on firmware load error
@ 2021-07-01 14:10 ` Alex Deucher
0 siblings, 0 replies; 16+ messages in thread
From: Alex Deucher @ 2021-07-01 14:10 UTC (permalink / raw)
To: Jiri Kosina
Cc: David Airlie, Vojtech Pavlik, LKML, amd-gfx list,
Maling list - DRI developers, Alex Deucher, Christian König
Applied. Thanks!
Alex
On Thu, Jul 1, 2021 at 4:33 AM Jiri Kosina <jikos@kernel.org> wrote:
>
> On Thu, 24 Jun 2021, Jiri Kosina wrote:
>
> > From: Jiri Kosina <jkosina@suse.cz>
> >
> > In case when psp_init_asd_microcode() fails to load ASD microcode file,
> > psp_v12_0_init_microcode() tries to print the firmware filename that
> > failed to load before bailing out.
> >
> > This is wrong because:
> >
> > - the firmware filename it would want it print is an incorrect one as
> > psp_init_asd_microcode() and psp_v12_0_init_microcode() are loading
> > different filenames
> > - it tries to print fw_name, but that's not yet been initialized by that
> > time, so it prints random stack contents, e.g.
> >
> > amdgpu 0000:04:00.0: Direct firmware load for amdgpu/renoir_asd.bin failed with error -2
> > amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
> > amdgpu 0000:04:00.0: amdgpu: psp v12.0: Failed to load firmware "\xfeTO\x8e\xff\xff"
> >
> > Fix that by bailing out immediately, instead of priting the bogus error
> > message.
>
> Friendly ping on this one too; priting a few bytes of stack is not a
> *huge* info leak, but I believe it should be fixed nevertheless.
>
> Thanks.
>
> >
> > Reported-by: Vojtech Pavlik <vojtech@ucw.cz>
> > Signed-off-by: Jiri Kosina <jkosina@suse.cz>
>
>
> > ---
> >
> > v1 -> v2: remove now-unused label
> >
> > drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > index c4828bd3264b..b0ee77ee80b9 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
> > @@ -67,7 +67,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> >
> > err = psp_init_asd_microcode(psp, chip_name);
> > if (err)
> > - goto out;
> > + return err;
> >
> > snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
> > err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
> > @@ -80,7 +80,7 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> > } else {
> > err = amdgpu_ucode_validate(adev->psp.ta_fw);
> > if (err)
> > - goto out2;
> > + goto out;
> >
> > ta_hdr = (const struct ta_firmware_header_v1_0 *)
> > adev->psp.ta_fw->data;
> > @@ -105,10 +105,9 @@ static int psp_v12_0_init_microcode(struct psp_context *psp)
> >
> > return 0;
> >
> > -out2:
> > +out:
> > release_firmware(adev->psp.ta_fw);
> > adev->psp.ta_fw = NULL;
> > -out:
> > if (err) {
> > dev_err(adev->dev,
> > "psp v12.0: Failed to load firmware \"%s\"\n",
> > --
> > 2.12.3
> >
>
> --
> Jiri Kosina
> SUSE Labs
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2021-07-01 14:11 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-24 9:37 [PATCH] drm/amdgpu: Avoid printing of stack contents on firmware load error Jiri Kosina
2021-06-24 9:37 ` Jiri Kosina
2021-06-24 9:37 ` Jiri Kosina
[not found] ` <YNRnDTD1fdpZOXB8@suse.com>
2021-06-24 11:11 ` [PATCH v2] " Jiri Kosina
2021-06-24 11:11 ` Jiri Kosina
2021-06-24 11:11 ` Jiri Kosina
2021-07-01 8:33 ` Jiri Kosina
2021-07-01 8:33 ` Jiri Kosina
2021-07-01 8:33 ` Jiri Kosina
2021-07-01 14:10 ` Alex Deucher
2021-07-01 14:10 ` Alex Deucher
2021-07-01 14:10 ` Alex Deucher
2021-06-24 13:33 ` [PATCH] " kernel test robot
2021-06-24 13:33 ` kernel test robot
2021-06-24 13:33 ` kernel test robot
2021-06-24 13:33 ` kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.