Commit 181c4b4f authored by Jiang Liu's avatar Jiang Liu Committed by Yongjian Sun
Browse files

drm/amdgpu: bail out when failed to load fw in psp_init_cap_microcode()

mainline inclusion
from mainline-v6.12-rc3
commit a0a455b4bc7483ad60e8b8a50330c1e05bb7bfcf
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBPC7M
CVE: CVE-2025-21784

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a0a455b4bc7483ad60e8b8a50330c1e05bb7bfcf



--------------------------------

In function psp_init_cap_microcode(), it should bail out when failed to
load firmware, otherwise it may cause invalid memory access.

Fixes: 07dbfc6b ("drm/amd: Use `amdgpu_ucode_*` helpers for PSP")
Reviewed-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Signed-off-by: default avatarJiang Liu <gerry@linux.alibaba.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarYongjian Sun <sunyongjian1@huawei.com>
parent 252f84b8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -3450,10 +3450,11 @@ int psp_init_cap_microcode(struct psp_context *psp, const char *chip_name)
		if (err == -ENODEV) {
			dev_warn(adev->dev, "cap microcode does not exist, skip\n");
			err = 0;
			goto out;
		}
		} else {
			dev_err(adev->dev, "fail to initialize cap microcode\n");
		}
		goto out;
	}

	info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CAP];
	info->ucode_id = AMDGPU_UCODE_ID_CAP;