Commit dddc0557 authored by Nicholas Kazlauskas's avatar Nicholas Kazlauskas Committed by Alex Deucher

drm/amd/display: Guard against null crtc in CRC IRQ

[Why]

A null pointer deference can occur if crtc is null in
amdgpu_dm_crtc_handle_crc_irq. This can happen if get_crtc_by_otg_inst
returns NULL during dm_crtc_high_irq, leading to a hang in some IGT
test cases.

[How]

Check that CRTC is non-null before accessing its fields.
Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: default avatarSun peng Li <Sunpeng.Li@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 43314913
...@@ -98,10 +98,16 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name, ...@@ -98,10 +98,16 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name,
*/ */
void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc) void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc)
{ {
struct dm_crtc_state *crtc_state = to_dm_crtc_state(crtc->state); struct dm_crtc_state *crtc_state;
struct dc_stream_state *stream_state = crtc_state->stream; struct dc_stream_state *stream_state;
uint32_t crcs[3]; uint32_t crcs[3];
if (crtc == NULL)
return;
crtc_state = to_dm_crtc_state(crtc->state);
stream_state = crtc_state->stream;
/* Early return if CRC capture is not enabled. */ /* Early return if CRC capture is not enabled. */
if (!crtc_state->crc_enabled) if (!crtc_state->crc_enabled)
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment