drm/amdgpu: Fix the null pointer when load rlc firmware
authorjsg <jsg@openbsd.org>
Fri, 2 Feb 2024 03:03:16 +0000 (03:03 +0000)
committerjsg <jsg@openbsd.org>
Fri, 2 Feb 2024 03:03:16 +0000 (03:03 +0000)
From Ma Jun
8b5bacce2d13dbe648f0bfd3f738ecce8db4978c in linux-6.6.y/6.6.15
bc03c02cc1991a066b23e69bbcc0f66e8f1f7453 in mainline linux

sys/dev/pci/drm/amd/amdgpu/gfx_v10_0.c

index dc29e6c..965c86c 100644 (file)
@@ -3989,16 +3989,13 @@ static int gfx_v10_0_init_microcode(struct amdgpu_device *adev)
 
        if (!amdgpu_sriov_vf(adev)) {
                snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", ucode_prefix);
-               err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name);
-               /* don't check this.  There are apparently firmwares in the wild with
-                * incorrect size in the header
-                */
-               if (err == -ENODEV)
-                       goto out;
+               err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
                if (err)
-                       dev_dbg(adev->dev,
-                               "gfx10: amdgpu_ucode_request() failed \"%s\"\n",
-                               fw_name);
+                       goto out;
+
+               /* don't validate this firmware. There are apparently firmwares
+                * in the wild with incorrect size in the header
+                */
                rlc_hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data;
                version_major = le16_to_cpu(rlc_hdr->header.header_version_major);
                version_minor = le16_to_cpu(rlc_hdr->header.header_version_minor);