Skip to content

Commit

Permalink
drm/amdgpu: fix RAS memory leak in error case
Browse files Browse the repository at this point in the history
RAS context memory needs to freed in failure case.

Signed-off-by: Guchun Chen <guchun.chen@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Guchun Chen authored and Alex Deucher committed Jun 2, 2020
1 parent d43f7ff commit 5e91160
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
Original file line number Diff line number Diff line change
Expand Up @@ -1917,9 +1917,8 @@ int amdgpu_ras_init(struct amdgpu_device *adev)
amdgpu_ras_check_supported(adev, &con->hw_supported,
&con->supported);
if (!con->hw_supported) {
amdgpu_ras_set_context(adev, NULL);
kfree(con);
return 0;
r = 0;
goto err_out;
}

con->features = 0;
Expand All @@ -1930,29 +1929,31 @@ int amdgpu_ras_init(struct amdgpu_device *adev)
if (adev->nbio.funcs->init_ras_controller_interrupt) {
r = adev->nbio.funcs->init_ras_controller_interrupt(adev);
if (r)
return r;
goto err_out;
}

if (adev->nbio.funcs->init_ras_err_event_athub_interrupt) {
r = adev->nbio.funcs->init_ras_err_event_athub_interrupt(adev);
if (r)
return r;
goto err_out;
}

amdgpu_ras_mask &= AMDGPU_RAS_BLOCK_MASK;

if (amdgpu_ras_fs_init(adev))
goto fs_out;
if (amdgpu_ras_fs_init(adev)) {
r = -EINVAL;
goto err_out;
}

dev_info(adev->dev, "RAS INFO: ras initialized successfully, "
"hardware ability[%x] ras_mask[%x]\n",
con->hw_supported, con->supported);
return 0;
fs_out:
err_out:
amdgpu_ras_set_context(adev, NULL);
kfree(con);

return -EINVAL;
return r;
}

/* helper function to handle common stuff in ip late init phase */
Expand Down

0 comments on commit 5e91160

Please sign in to comment.