[PATCH] drm/amd/display: Add NULL check for stream before dereference in 'dm_vupdate_high_irq'

Pillai, Aurabindo Aurabindo.Pillai at amd.com
Wed Aug 6 14:09:32 UTC 2025


[AMD Official Use Only - AMD Internal Distribution Only]

Reviewed-by: Aurabindo Pillai <aurabindo.pillai at amd.com>

--

Regards,
Jay


________________________________
From: SHANMUGAM, SRINIVASAN <SRINIVASAN.SHANMUGAM at amd.com>
Sent: Wednesday, August 6, 2025 8:51 AM
To: Hung, Alex <Alex.Hung at amd.com>; Pillai, Aurabindo <Aurabindo.Pillai at amd.com>
Cc: amd-gfx at lists.freedesktop.org <amd-gfx at lists.freedesktop.org>; SHANMUGAM, SRINIVASAN <SRINIVASAN.SHANMUGAM at amd.com>; Dan Carpenter <dan.carpenter at linaro.org>; Li, Roman <Roman.Li at amd.com>; Chung, ChiaHsuan (Tom) <ChiaHsuan.Chung at amd.com>; Wentland, Harry <Harry.Wentland at amd.com>; Wu, Ray <Ray.Wu at amd.com>; Wheeler, Daniel <Daniel.Wheeler at amd.com>; Kazlauskas, Nicholas <Nicholas.Kazlauskas at amd.com>
Subject: [PATCH] drm/amd/display: Add NULL check for stream before dereference in 'dm_vupdate_high_irq'

Add a NULL check for acrtc->dm_irq_params.stream before
accessing its members.

Fixes below:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:623
dm_vupdate_high_irq() warn: variable dereferenced before check
'acrtc->dm_irq_params.stream' (see line 615)

614     if (vrr_active) {
615             bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
616             bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled;
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ New dereferences

617             bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state
618                     == VRR_STATE_ACTIVE_VARIABLE;
619
620             amdgpu_dm_crtc_handle_vblank(acrtc);
621
622             /* BTR processing for pre-DCE12 ASICs */
623             if (acrtc->dm_irq_params.stream &&
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ But the existing code assumed it could be NULL. Someone is wrong.

624                 adev->family < AMDGPU_FAMILY_AI) {
625                     spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags);

'Fixes: 7a586ce03c42 ("drm/amd/display: more liberal vmin/vmax update for freesync")'
Reported-by: Dan Carpenter <dan.carpenter at linaro.org>
Cc: Alex Hung <alex.hung at amd.com>
Cc: Aurabindo Pillai <aurabindo.pillai at amd.com>
Cc: Roman Li <roman.li at amd.com>
Cc: ChiaHsuan Chung <chiahsuan.chung at amd.com>
Cc: Harry Wentland <harry.wentland at amd.com>
Cc: Ray Wu <ray.wu at amd.com>
Cc: Daniel Wheeler <daniel.wheeler at amd.com>
Cc: Nicholas Kazlauskas <nicholas.kazlauskas at amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 31ea57edeb45..c0d31c26850d 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -611,7 +611,7 @@ static void dm_vupdate_high_irq(void *interrupt_params)
                  * page-flip completion events that have been queued to us
                  * if a pageflip happened inside front-porch.
                  */
-               if (vrr_active) {
+               if (vrr_active && acrtc->dm_irq_params.stream) {
                         bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;
                         bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled;
                         bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state
@@ -620,8 +620,7 @@ static void dm_vupdate_high_irq(void *interrupt_params)
                         amdgpu_dm_crtc_handle_vblank(acrtc);

                         /* BTR processing for pre-DCE12 ASICs */
-                       if (acrtc->dm_irq_params.stream &&
-                           adev->family < AMDGPU_FAMILY_AI) {
+                       if (adev->family < AMDGPU_FAMILY_AI) {
                                 spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags);
                                 mod_freesync_handle_v_update(
                                     adev->dm.freesync_module,
--
2.34.1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20250806/07bc1632/attachment-0001.htm>


More information about the amd-gfx mailing list