Thanks for your feedback. We will prepare a V2 patch according to your advice.

Best wishes,
Tuo Li


On 2021/8/10 21:38, Chen, Guchun wrote:
[Public]

Thanks for your patch.

I suggest moving the check of function pointer dc->clk_mgr->funcs->get_clock 
earlier, and return early if it's NULL, as if it's NULL, it's meaningless to continue 
the clock setting.

....
if (!dc->clk_mgr || !dc->clk_mgr->funcs->get_clock)
        return DC_FAIL_UNSUPPORTED_1;

dc->clk_mgr->funcs->get_clock(dc->clk_mgr,
        context, clock_type, &clock_cfg);
....

Regards,
Guchun

-----Original Message-----
From: amd-gfx <amd-gfx-boun...@lists.freedesktop.org> On Behalf Of Tuo Li
Sent: Tuesday, August 10, 2021 5:20 PM
To: Wentland, Harry <harry.wentl...@amd.com>; Li, Sun peng (Leo) <sunpeng...@amd.com>; Deucher, Alexander <alexander.deuc...@amd.com>; Koenig, 
Christian <christian.koe...@amd.com>; Pan, Xinhui <xinhui....@amd.com>; airl...@linux.ie; dan...@ffwll.ch; Cyr, Aric <aric....@amd.com>; Lei, Jun 
<jun....@amd.com>; Zhuo, Qingqing <qingqing.z...@amd.com>; Siqueira, Rodrigo <rodrigo.sique...@amd.com>; Lee, Alvin <alvin.l...@amd.com>; 
Stempen, Vladimir <vladimir.stem...@amd.com>; isabel.zh...@amd.com; Lee, Sung <sung....@amd.com>; Po-Yu Hsieh Paul <paul.hs...@amd.com>; Wood, 
Wyatt <wyatt.w...@amd.com>
Cc: amd-...@lists.freedesktop.org; dri-devel@lists.freedesktop.org; 
linux-ker...@vger.kernel.org; baijiaju1...@gmail.com; Tuo Li <isli...@gmail.com>; 
TOTE Robot <os...@tsinghua.edu.cn>
Subject: [PATCH] drm/display: fix possible null-pointer dereference in 
dcn10_set_clock()

The variable dc->clk_mgr is checked in:
   if (dc->clk_mgr && dc->clk_mgr->funcs->get_clock)

This indicates dc->clk_mgr can be NULL.
However, it is dereferenced in:
   if (!dc->clk_mgr->funcs->get_clock)

To fix this possible null-pointer dereference, check dc->clk_mgr before 
dereferencing it.

Reported-by: TOTE Robot <os...@tsinghua.edu.cn>
Signed-off-by: Tuo Li <isli...@gmail.com>
---
  drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c 
b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
index c545eddabdcc..3a7c7c7efa68 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
@@ -3635,7 +3635,7 @@ enum dc_status dcn10_set_clock(struct dc *dc,
                                dc->clk_mgr->funcs->get_clock(dc->clk_mgr,
                                                context, clock_type, 
&clock_cfg);
- if (!dc->clk_mgr->funcs->get_clock)
+       if (dc->clk_mgr && !dc->clk_mgr->funcs->get_clock)
                return DC_FAIL_UNSUPPORTED_1;
if (clk_khz > clock_cfg.max_clock_khz)
--
2.25.1

Reply via email to