drm/amdgpu: Check if CPER enabled when generating CPER
authorXiang Liu <xiang.liu@amd.com>
Mon, 24 Feb 2025 13:10:24 +0000 (21:10 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Feb 2025 16:45:12 +0000 (11:45 -0500)
In the case of CPER disabled, generating CPER will cause kernel NULL
pointer dereference without checking.

Signed-off-by: Xiang Liu <xiang.liu@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c
drivers/gpu/drm/amd/pm/amdgpu_dpm.c

index d11593cd19229d8a57d0e23bf6a5ea7c44561cad..ffd4c64e123c7baa45ba8cd56ba20a2054e1ed19 100644 (file)
@@ -392,6 +392,9 @@ static void aca_banks_generate_cper(struct amdgpu_device *adev,
        struct aca_bank_node *node;
        struct aca_bank *bank;
 
+       if (!adev->cper.enabled)
+               return;
+
        if (!banks || !count) {
                dev_warn(adev->dev, "fail to generate cper records\n");
                return;
index 7c4ff12269d9ee219053b469af7e4060f7acb309..81e9b443ca0adc3ec5016eddf2c3ad4fba9ad805 100644 (file)
@@ -716,8 +716,9 @@ int amdgpu_dpm_send_rma_reason(struct amdgpu_device *adev)
        ret = smu_send_rma_reason(smu);
        mutex_unlock(&adev->pm.mutex);
 
-       if (amdgpu_cper_generate_bp_threshold_record(adev))
-               dev_warn(adev->dev, "fail to generate bad page threshold cper records\n");
+       if (adev->cper.enabled)
+               if (amdgpu_cper_generate_bp_threshold_record(adev))
+                       dev_warn(adev->dev, "fail to generate bad page threshold cper records\n");
 
        return ret;
 }