mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
drm/amd/display: Spinlock before reading event
[ Upstream commit ae13c8a5cff92015b9a3eb7cee65ebc75859487f ] [WHY & HOW] A read of acrtc_attach->base.state->event was not locked so moving it inside the spinlock. This fixes a LOCK_EVASION issue reported by Coverity. Reviewed-by: Harry Wentland <harry.wentland@amd.com> Acked-by: Tom Chung <chiahsuan.chung@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ca4e62eb01
commit
33e1ffc9d4
@@ -8055,15 +8055,13 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
|
|||||||
bundle->stream_update.vrr_infopacket =
|
bundle->stream_update.vrr_infopacket =
|
||||||
&acrtc_state->stream->vrr_infopacket;
|
&acrtc_state->stream->vrr_infopacket;
|
||||||
}
|
}
|
||||||
} else if (cursor_update && acrtc_state->active_planes > 0 &&
|
} else if (cursor_update && acrtc_state->active_planes > 0) {
|
||||||
acrtc_attach->base.state->event) {
|
|
||||||
drm_crtc_vblank_get(pcrtc);
|
|
||||||
|
|
||||||
spin_lock_irqsave(&pcrtc->dev->event_lock, flags);
|
spin_lock_irqsave(&pcrtc->dev->event_lock, flags);
|
||||||
|
if (acrtc_attach->base.state->event) {
|
||||||
acrtc_attach->event = acrtc_attach->base.state->event;
|
drm_crtc_vblank_get(pcrtc);
|
||||||
acrtc_attach->base.state->event = NULL;
|
acrtc_attach->event = acrtc_attach->base.state->event;
|
||||||
|
acrtc_attach->base.state->event = NULL;
|
||||||
|
}
|
||||||
spin_unlock_irqrestore(&pcrtc->dev->event_lock, flags);
|
spin_unlock_irqrestore(&pcrtc->dev->event_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user