[AMD Official Use Only - AMD Internal Distribution Only]

Hi Srini,

Thanks for helping add missing NULL pointer check in the Linux side. Is there 
any further actions needed from me?

This fix looks good to me, approved.
Reviewed-by: Yihan Zhu <[email protected]>


Regards,
Yihan Z

-----Original Message-----
From: SHANMUGAM, SRINIVASAN <[email protected]>
Sent: Wednesday, April 23, 2025 9:32 AM
To: Pillai, Aurabindo <[email protected]>
Cc: [email protected]; SHANMUGAM, SRINIVASAN 
<[email protected]>; Zhu, Yihan <[email protected]>; Wentland, Harry 
<[email protected]>; Kazlauskas, Nicholas <[email protected]>; 
Chung, ChiaHsuan (Tom) <[email protected]>; Rodrigo Siqueira 
<[email protected]>; Li, Roman <[email protected]>; Hung, Alex 
<[email protected]>; Dan Carpenter <[email protected]>
Subject: [PATCH] drm/amd/display: Fix NULL pointer dereference for 
program_lut_mode in dcn401_populate_mcm_luts

This commit introduces a NULL pointer check for
mpc->funcs->program_lut_mode in the dcn401_populate_mcm_luts function.
The previous implementation directly called program_lut_mode without validating 
its existence, which could lead to a NULL pointer dereference.

With this change, the function is now only invoked if
mpc->funcs->program_lut_mode is not NULL

Fixes the below:

drivers/gpu/drm/amd/amdgpu/../display/dc/hwss/dcn401/dcn401_hwseq.c:720 
dcn401_populate_mcm_luts()
error: we previously assumed 'mpc->funcs->program_lut_mode' could be null (see 
line 701)

drivers/gpu/drm/amd/amdgpu/../display/dc/hwss/dcn401/dcn401_hwseq.c
    642 void dcn401_populate_mcm_luts(struct dc *dc,
    643                 struct pipe_ctx *pipe_ctx,
    644                 struct dc_cm2_func_luts mcm_luts,
    645                 bool lut_bank_a)
    646 {
        ...
    716                 }
    717                 if (m_lut_params.pwl) {
    718                         if (mpc->funcs->mcm.populate_lut)
    719                                 mpc->funcs->mcm.populate_lut(mpc, 
m_lut_params, lut_bank_a, mpcc_id);
--> 720                         mpc->funcs->program_lut_mode(mpc, 
MCM_LUT_SHAPER, MCM_LUT_ENABLE, lut_bank_a, mpcc_id);

Cc: Yihan Zhu <[email protected]>
Cc: Harry Wentland <[email protected]>
Cc: Nicholas Kazlauskas <[email protected]>
Cc: Tom Chung <[email protected]>
Cc: Rodrigo Siqueira <[email protected]>
Cc: Roman Li <[email protected]>
Cc: Alex Hung <[email protected]>
Cc: Aurabindo Pillai <[email protected]>
Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Srinivasan Shanmugam <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
index 8611eb9607df..ae7194da5987 100644
--- a/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
@@ -717,7 +717,8 @@ void dcn401_populate_mcm_luts(struct dc *dc,
                if (m_lut_params.pwl) {
                        if (mpc->funcs->mcm.populate_lut)
                                mpc->funcs->mcm.populate_lut(mpc, m_lut_params, 
lut_bank_a, mpcc_id);
-                       mpc->funcs->program_lut_mode(mpc, MCM_LUT_SHAPER, 
MCM_LUT_ENABLE, lut_bank_a, mpcc_id);
+                       if (mpc->funcs->program_lut_mode)
+                               mpc->funcs->program_lut_mode(mpc, 
MCM_LUT_SHAPER, MCM_LUT_ENABLE,
+lut_bank_a, mpcc_id);
                }
        }

--
2.34.1

Reply via email to