ras_err_data.err_addr was never allocated Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 50c13b0..d9fb860 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1011,6 +1011,21 @@ static void amdgpu_ras_interrupt_handler(struct ras_manager *obj) int ret; struct ras_err_data err_data = {0, 0, 0, NULL}; + /* Allocate enough to serve max number of requests*/ + int err_addr_size = data->ring_size / data->aligned_element_size * + obj->adev->umc.umc_inst_num * + obj->adev->umc.channel_inst_num; + + err_data.err_addr = kcalloc(err_addr_size, + sizeof(*err_data.err_addr), + GFP_KERNEL); + + if (!err_data.err_addr) { + DRM_ERROR("Not enough memory!"); + return; + } + + while (data->rptr != data->wptr) { rmb(); memcpy(&entry, &data->ring[data->rptr], @@ -1039,6 +1054,8 @@ static void amdgpu_ras_interrupt_handler(struct ras_manager *obj) } } } + + kfree(err_data.err_addr); } static void amdgpu_ras_interrupt_process_handler(struct work_struct *work) -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx