<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 10pt; color: rgb(0, 0, 255);" class="elementToProof">
[AMD Official Use Only - AMD Internal Distribution Only]</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com></div>
<div id="Signature">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
--</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Regards,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Jay<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> SHANMUGAM, SRINIVASAN <SRINIVASAN.SHANMUGAM@amd.com><br>
<b>Sent:</b> Wednesday, August 6, 2025 8:51 AM<br>
<b>To:</b> Hung, Alex <Alex.Hung@amd.com>; Pillai, Aurabindo <Aurabindo.Pillai@amd.com><br>
<b>Cc:</b> amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; SHANMUGAM, SRINIVASAN <SRINIVASAN.SHANMUGAM@amd.com>; Dan Carpenter <dan.carpenter@linaro.org>; Li, Roman <Roman.Li@amd.com>; Chung, ChiaHsuan (Tom) <ChiaHsuan.Chung@amd.com>; Wentland,
Harry <Harry.Wentland@amd.com>; Wu, Ray <Ray.Wu@amd.com>; Wheeler, Daniel <Daniel.Wheeler@amd.com>; Kazlauskas, Nicholas <Nicholas.Kazlauskas@amd.com><br>
<b>Subject:</b> [PATCH] drm/amd/display: Add NULL check for stream before dereference in 'dm_vupdate_high_irq'</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Add a NULL check for acrtc->dm_irq_params.stream before<br>
accessing its members.<br>
<br>
Fixes below:<br>
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:623<br>
dm_vupdate_high_irq() warn: variable dereferenced before check<br>
'acrtc->dm_irq_params.stream' (see line 615)<br>
<br>
614 if (vrr_active) {<br>
615 bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;<br>
^^^^^^^^^^^^^^^^^^^^^^^^^^^<br>
616 bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled;<br>
^^^^^^^^^^^^^^^^^^^^^^^^^^^ New dereferences<br>
<br>
617 bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state<br>
618 == VRR_STATE_ACTIVE_VARIABLE;<br>
619<br>
620 amdgpu_dm_crtc_handle_vblank(acrtc);<br>
621<br>
622 /* BTR processing for pre-DCE12 ASICs */<br>
623 if (acrtc->dm_irq_params.stream &&<br>
^^^^^^^^^^^^^^^^^^^^^^^^^^^ But the existing code assumed it could be NULL. Someone is wrong.<br>
<br>
624 adev->family < AMDGPU_FAMILY_AI) {<br>
625 spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags);<br>
<br>
'Fixes: 7a586ce03c42 ("drm/amd/display: more liberal vmin/vmax update for freesync")'<br>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org><br>
Cc: Alex Hung <alex.hung@amd.com><br>
Cc: Aurabindo Pillai <aurabindo.pillai@amd.com><br>
Cc: Roman Li <roman.li@amd.com><br>
Cc: ChiaHsuan Chung <chiahsuan.chung@amd.com><br>
Cc: Harry Wentland <harry.wentland@amd.com><br>
Cc: Ray Wu <ray.wu@amd.com><br>
Cc: Daniel Wheeler <daniel.wheeler@amd.com><br>
Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com><br>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com><br>
---<br>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 ++---<br>
1 file changed, 2 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c<br>
index 31ea57edeb45..c0d31c26850d 100644<br>
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c<br>
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c<br>
@@ -611,7 +611,7 @@ static void dm_vupdate_high_irq(void *interrupt_params)<br>
* page-flip completion events that have been queued to us<br>
* if a pageflip happened inside front-porch.<br>
*/<br>
- if (vrr_active) {<br>
+ if (vrr_active && acrtc->dm_irq_params.stream) {<br>
bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;<br>
bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled;<br>
bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state<br>
@@ -620,8 +620,7 @@ static void dm_vupdate_high_irq(void *interrupt_params)<br>
amdgpu_dm_crtc_handle_vblank(acrtc);<br>
<br>
/* BTR processing for pre-DCE12 ASICs */<br>
- if (acrtc->dm_irq_params.stream &&<br>
- adev->family < AMDGPU_FAMILY_AI) {<br>
+ if (adev->family < AMDGPU_FAMILY_AI) {<br>
spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags);<br>
mod_freesync_handle_v_update(<br>
adev->dm.freesync_module,<br>
-- <br>
2.34.1<br>
<br>
</div>
</span></font></div>
</body>
</html>