[PATCH 2/2] drm/amd/display: fix null pointer access in gpu reset
Harry Wentland
harry.wentland at amd.com
Mon Jun 28 13:54:52 UTC 2021
On 2021-06-28 5:27 a.m., Guchun Chen wrote:
> During GPU reset, when receiving a DMCUB OUTBUX0 interrupt,
> DAL code will set it to be OUTBOX interrupt and sets hw interrupt.
> However, OUTBOX interrupt is not registered yet, so a NULL pointer
> access will be executed.
>
> Call Trace:
> dal_irq_service_set+0x30/0x90 [amdgpu]
> dc_interrupt_set+0x24/0x30 [amdgpu]
> amdgpu_dm_set_dmub_outbox_irq_state+0x22/0x30 [amdgpu]
> amdgpu_irq_update+0x77/0xa0 [amdgpu]
> amdgpu_irq_gpu_reset_resume_helper+0x67/0xa0 [amdgpu]
> amdgpu_do_asic_reset+0x219/0x260 [amdgpu]
> amdgpu_device_gpu_recover.cold+0x8c5/0xb64 [amdgpu]
> amdgpu_debugfs_gpu_recover_show+0x2c/0x60 [amdgpu]
> seq_read_iter+0xc2/0x450
> ? do_anonymous_page+0x22c/0x3b0
> seq_read+0xf9/0x140
> full_proxy_read+0x5c/0x90
> vfs_read+0xaa/0x190
> ksys_read+0x67/0xe0
> __x64_sys_read+0x1a/0x20
>
> Fixes: 85465bd6dc6e drm/amdgpu/display: remove an old DCN3 guard
>
> Signed-off-by: Guchun Chen <guchun.chen at amd.com>
Series is
Reviewed-by: Harry Wentland <harry.wentland at amd.com>
Harry
> ---
> drivers/gpu/drm/amd/display/dc/irq/irq_service.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/irq_service.c b/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
> index 5f245bde54ff..a2a4fbeb83f8 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
> @@ -119,7 +119,7 @@ bool dal_irq_service_set(
>
> dal_irq_service_ack(irq_service, source);
>
> - if (info->funcs->set)
> + if (info->funcs && info->funcs->set)
> return info->funcs->set(irq_service, info, enable);
>
> dal_irq_service_set_generic(irq_service, info, enable);
> @@ -153,7 +153,7 @@ bool dal_irq_service_ack(
> return false;
> }
>
> - if (info->funcs->ack)
> + if (info->funcs && info->funcs->ack)
> return info->funcs->ack(irq_service, info);
>
> dal_irq_service_ack_generic(irq_service, info);
>
More information about the amd-gfx
mailing list