linux/drivers/gpu/drm/amd/display/amdgpu_dm
Nicholas Kazlauskas 32685b32d8 drm/amd/display: Fix double free during GPU reset on DC streams
[Why]
The issue only occurs during the GPU reset code path.

We first backup the current state prior to commiting 0 streams
internally from DM to DC. This state backup contains valid link
encoder assignments.

DC will clear the link encoder assignments as part of current state
(but not the backup, since it was a copied before the commit) and
free the extra stream reference it held.

DC requires that the link encoder assignments remain cleared/invalid
prior to commiting. Since the backup still has valid assignments we
call the interface post reset to clear them. This routine also
releases the extra reference that the link encoder interface held -
resulting in a double free (and eventually a NULL pointer dereference).

[How]
We'll have to do a full DC commit anyway after GPU reset because
the stream count previously went to 0.

We don't need to retain the assignment that we had backed up, so
just copy off of the now clean current state assignment after the
reset has occcurred with the new link_enc_cfg_copy() interface.

Fixes: 6d63fcc2a3 ("drm/amd/display: Reset link encoder assignments for GPU reset")

Reviewed-by: Jimmy Kizito <Jimmy.Kizito@amd.com>
Acked-by: Alan Liu <HaoPing.Liu@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2022-03-15 14:25:16 -04:00
..
amdgpu_dm_color.c drm/amd: fix improper docstring syntax 2021-12-13 16:32:34 -05:00
amdgpu_dm_crc.c drm/amd/display: add connector type check for CRC source set 2021-12-01 17:08:47 -05:00
amdgpu_dm_crc.h drm/amd/display: Refactor suspend/resume of Secure display 2021-05-19 22:39:16 -04:00
amdgpu_dm_debugfs.c Merge tag 'amd-drm-next-5.18-2022-02-25' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2022-03-01 16:19:02 +10:00
amdgpu_dm_debugfs.h drm/amd/display: Support crc on specific region 2021-03-05 15:11:47 -05:00
amdgpu_dm_hdcp.c drm/amd/display: Add DCN315 DM Support 2022-02-18 14:07:01 -05:00
amdgpu_dm_hdcp.h
amdgpu_dm_helpers.c drm/amd/display: Add conditional around function 2022-02-24 17:26:16 -05:00
amdgpu_dm_irq_params.h drm/amd/display: Use vblank control events for PSR enable/disable 2021-08-16 15:35:56 -04:00
amdgpu_dm_irq.c drm/amd/display: use GFP_ATOMIC in amdgpu_dm_irq_schedule_work 2021-08-09 15:44:09 -04:00
amdgpu_dm_irq.h drm/amd/display: Support for DMUB AUX 2021-05-10 18:06:44 -04:00
amdgpu_dm_mst_types.c drm/amd/display: Don't fill up the logs 2022-03-02 18:38:51 -05:00
amdgpu_dm_mst_types.h drm/amd/display: Add dsc pre-validation in atomic check 2022-02-16 17:30:02 -05:00
amdgpu_dm_pp_smu.c drm/amd/pm: create a new holder for those APIs used only by legacy ASICs(si/kv) 2022-01-14 17:51:14 -05:00
amdgpu_dm_psr.c drm/amd/display: Refactor PSR DPCD caps detection 2022-02-23 14:22:03 -05:00
amdgpu_dm_psr.h drm/amd/display: Delay PSR entry 2021-06-21 17:45:14 -04:00
amdgpu_dm_services.c
amdgpu_dm_trace.h drm/amd/display: Add control mechanism for FPU utilization 2021-08-05 21:17:59 -04:00
amdgpu_dm.c drm/amd/display: Fix double free during GPU reset on DC streams 2022-03-15 14:25:16 -04:00
amdgpu_dm.h drm/amd/display: Add dsc pre-validation in atomic check 2022-02-16 17:30:02 -05:00
dc_fpu.c drm/amd/display: Re-arrange FPU code structure for dcn2x 2021-10-06 15:49:24 -04:00
dc_fpu.h drm/amd/display: Add DC_FP helper to check FPU state 2021-08-05 21:17:59 -04:00
Makefile drm/amd/display: Add control mechanism for FPU 2021-08-05 21:17:59 -04:00