[PATCH] drm/amd/display: Fix variable deferencing before NULL check in edp_setup_replay()

SRINIVASAN SHANMUGAM srinivasan.shanmugam at amd.com
Mon Jan 8 16:40:43 UTC 2024


On 1/8/2024 9:58 PM, Aurabindo Pillai wrote:
>
>
> On 2024-01-08 11:19, Srinivasan Shanmugam wrote:
>> In edp_setup_replay(), 'struct dc *dc' & 'struct dmub_replay *replay'
>> was dereferenced before the pointer 'link' & 'replay' NULL check.
>>
>> Fixes the below:
>> drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_edp_panel_control.c:947 
>> edp_setup_replay() warn: variable dereferenced before check 'link' 
>> (see line 933)
>>
>> Cc: Bhawanpreet Lakha <Bhawanpreet.Lakha at amd.com>
>> Cc: Harry Wentland <harry.wentland at amd.com>
>> Cc: Rodrigo Siqueira <Rodrigo.Siqueira at amd.com>
>> Cc: Aurabindo Pillai <aurabindo.pillai at amd.com>
>> Cc: Alex Deucher <alexander.deucher at amd.com>
>> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
>> ---
>>   .../dc/link/protocols/link_edp_panel_control.c        | 11 +++++++----
>>   1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git 
>> a/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c 
>> b/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c
>> index 7f1196528218..046d3e205415 100644
>> --- 
>> a/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c
>> +++ 
>> b/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c
>> @@ -930,8 +930,8 @@ bool edp_get_replay_state(const struct dc_link 
>> *link, uint64_t *state)
>>   bool edp_setup_replay(struct dc_link *link, const struct 
>> dc_stream_state *stream)
>>   {
>>       /* To-do: Setup Replay */
>> -    struct dc *dc = link->ctx->dc;
>> -    struct dmub_replay *replay = dc->res_pool->replay;
>> +    struct dc *dc;
>> +    struct dmub_replay *replay;
>>       int i;
>>       unsigned int panel_inst;
>>       struct replay_context replay_context = { 0 };
>> @@ -947,6 +947,10 @@ bool edp_setup_replay(struct dc_link *link, 
>> const struct dc_stream_state *stream
>>       if (!link)
>>           return false;
>>   +    dc = link->ctx->dc;
>> +
>> +    replay = dc->res_pool->replay;
>> +
>>       if (!replay)
>>           return false;
>>   @@ -975,8 +979,7 @@ bool edp_setup_replay(struct dc_link *link, 
>> const struct dc_stream_state *stream
>>         replay_context.line_time_in_ns = lineTimeInNs;
>>   -    if (replay)
>> -        link->replay_settings.replay_feature_enabled =
>> +    link->replay_settings.replay_feature_enabled =
>>               replay->funcs->replay_copy_settings(replay, link, 
>> &replay_context, panel_inst);
>>       if (link->replay_settings.replay_feature_enabled) {
>
> Please add Cc: stable at vger.kernel.org in description.

Sure Jay!, thanks for reviews! will add this in description.

Best regards,

Srini

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


More information about the amd-gfx mailing list