[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 <yihan...@amd.com>


Regards,
Yihan Z

-----Original Message-----
From: SHANMUGAM, SRINIVASAN <srinivasan.shanmu...@amd.com>
Sent: Wednesday, April 23, 2025 9:32 AM
To: Pillai, Aurabindo <aurabindo.pil...@amd.com>
Cc: amd-gfx@lists.freedesktop.org; SHANMUGAM, SRINIVASAN 
<srinivasan.shanmu...@amd.com>; Zhu, Yihan <yihan....@amd.com>; Wentland, Harry 
<harry.wentl...@amd.com>; Kazlauskas, Nicholas <nicholas.kazlaus...@amd.com>; 
Chung, ChiaHsuan (Tom) <chiahsuan.ch...@amd.com>; Rodrigo Siqueira 
<rodrigo.sique...@amd.com>; Li, Roman <roman...@amd.com>; Hung, Alex 
<alex.h...@amd.com>; Dan Carpenter <dan.carpen...@linaro.org>
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 <yihan...@amd.com>
Cc: Harry Wentland <harry.wentl...@amd.com>
Cc: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Cc: Tom Chung <chiahsuan.ch...@amd.com>
Cc: Rodrigo Siqueira <rodrigo.sique...@amd.com>
Cc: Roman Li <roman...@amd.com>
Cc: Alex Hung <alex.h...@amd.com>
Cc: Aurabindo Pillai <aurabindo.pil...@amd.com>
Reported-by: Dan Carpenter <dan.carpen...@linaro.org>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmu...@amd.com>
---
 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