]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Fix NULL pointer dereference in amdgpu_dm_crtc_set_vblank()
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 7 Aug 2026 14:58:55 +0000 (16:58 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 12 Aug 2026 14:21:06 +0000 (10:21 -0400)
amdgpu_dm_crtc_set_vblank() dereferences acrtc_state->stream when
vblank is enabled/queried from DRM_IOCTL_MODE_CRTC_GET_SEQUENCE before
a stream is attached to it.

BUG: kernel NULL pointer dereference, address: 0000000000000008
RIP: amdgpu_dm_crtc_set_vblank+0x6b/0x4d0 [amdgpu]
Call Trace:
 drm_vblank_enable
 drm_vblank_get
 drm_crtc_get_sequence_ioctl
 drm_ioctl_kernel
 drm_ioctl

Reproduced by running VKCTS with WSI tests enabled on RADV.

Guard the enable path on acrtc_state->stream being non-NULL, matching
the existing checks in this function.

Fixes: 34d66bc7ff10 ("drm/amd/display: Fix Xorg desktop unresponsive on Replay panel")
Reviewed-by: Melissa Wen <mwen@igalia.com>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 7b1b31bf6942e6f43509b48da23f8e27269aac39)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c

index 06598273d48199aaafcdeeb8e53c32a14a1e68fb..56bf907f1f6cc8576b90adf6e5d8110fc12b222c 100644 (file)
@@ -257,7 +257,7 @@ static inline int amdgpu_dm_crtc_set_vblank(struct drm_crtc *crtc, bool enable)
 
        irq_type = amdgpu_display_crtc_idx_to_irq_type(adev, acrtc->crtc_id);
 
-       if (enable) {
+       if (enable && acrtc_state->stream) {
                struct dc *dc = adev->dm.dc;
                struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
                struct psr_settings *psr = &acrtc_state->stream->link->psr_settings;