2018-03-12 22:25:23

by Andrey Grodzovsky

[permalink] [raw]
Subject: Re: linux-4.16-rc5/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c:1723]: (warning) Possible null pointer dereference: pipe_ctx



On 03/12/2018 06:22 AM, David Binderman wrote:
> hello there,
>
> Source code is
>
>
>     for (i = 0; i < dc->res_pool->pipe_count; i++) {
>         if (res_ctx->pipe_ctx[i].stream) {
>             pipe_ctx = &res_ctx->pipe_ctx[i];
>             *pipe_idx = i;
>             break;
>         }
>     }

Indeed something like

if (!pipe_ctx)
              return false;

seems the right thing here.

Harry, Roman , your opinion ?

Andrey

>
>     /* Only supports eDP */
>     if (pipe_ctx->stream->sink->link->connector_signal != SIGNAL_TYPE_EDP)
>         return false;
>
> Suggest add some code to deal with the case that the for loop doesn't find
> what it is looking for and so pipe_ctx is NULL.
>
> Regards
>
> David Binderman
>
> _______________________________________________
> amd-gfx mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



2018-03-12 23:08:11

by Li, Roman

[permalink] [raw]
Subject: RE: linux-4.16-rc5/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c:1723]: (warning) Possible null pointer dereference: pipe_ctx

There is a check just before for-loop that should ensure pipe_ctx is not null:

/* Only supports single display */
if (context->stream_count != 1)
return false;

To remove the subject warning - we can rather add an assert:
assert(pipe_ctx);

Thanks,
Roman

-----Original Message-----
From: Grodzovsky, Andrey
Sent: Monday, March 12, 2018 6:23 PM
To: David Binderman <[email protected]>; Deucher, Alexander <[email protected]>; Koenig, Christian <[email protected]>; Zhou, David(ChunMing) <[email protected]>; [email protected]; [email protected]; [email protected]; [email protected]; Wentland, Harry <[email protected]>; Li, Roman <[email protected]>
Subject: Re: linux-4.16-rc5/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c:1723]: (warning) Possible null pointer dereference: pipe_ctx



On 03/12/2018 06:22 AM, David Binderman wrote:
> hello there,
>
> Source code is
>
>
>     for (i = 0; i < dc->res_pool->pipe_count; i++) {
>         if (res_ctx->pipe_ctx[i].stream) {
>             pipe_ctx = &res_ctx->pipe_ctx[i];
>             *pipe_idx = i;
>             break;
>         }
>     }

Indeed something like

if (!pipe_ctx)
              return false;

seems the right thing here.

Harry, Roman , your opinion ?

Andrey

>
>     /* Only supports eDP */
>     if (pipe_ctx->stream->sink->link->connector_signal !=
> SIGNAL_TYPE_EDP)
>         return false;
>
> Suggest add some code to deal with the case that the for loop doesn't
> find what it is looking for and so pipe_ctx is NULL.
>
> Regards
>
> David Binderman
>
> _______________________________________________
> amd-gfx mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

2018-03-12 23:12:14

by Andrey Grodzovsky

[permalink] [raw]
Subject: Re: linux-4.16-rc5/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c:1723]: (warning) Possible null pointer dereference: pipe_ctx

The check before alone is not enough for a case where there is another
bug introduced so that

context->stream_count is not in sync with actual number of streams
across entire resource_context.

At least assert indeed should be there.

Andrey


On 03/12/2018 07:06 PM, Li, Roman wrote:
> There is a check just before for-loop that should ensure pipe_ctx is not null:
>
> /* Only supports single display */
> if (context->stream_count != 1)
> return false;
>
> To remove the subject warning - we can rather add an assert:
> assert(pipe_ctx);
>
> Thanks,
> Roman
>
> -----Original Message-----
> From: Grodzovsky, Andrey
> Sent: Monday, March 12, 2018 6:23 PM
> To: David Binderman <[email protected]>; Deucher, Alexander <[email protected]>; Koenig, Christian <[email protected]>; Zhou, David(ChunMing) <[email protected]>; [email protected]; [email protected]; [email protected]; [email protected]; Wentland, Harry <[email protected]>; Li, Roman <[email protected]>
> Subject: Re: linux-4.16-rc5/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c:1723]: (warning) Possible null pointer dereference: pipe_ctx
>
>
>
> On 03/12/2018 06:22 AM, David Binderman wrote:
>> hello there,
>>
>> Source code is
>>
>>
>>     for (i = 0; i < dc->res_pool->pipe_count; i++) {
>>         if (res_ctx->pipe_ctx[i].stream) {
>>             pipe_ctx = &res_ctx->pipe_ctx[i];
>>             *pipe_idx = i;
>>             break;
>>         }
>>     }
> Indeed something like
>
> if (!pipe_ctx)
>               return false;
>
> seems the right thing here.
>
> Harry, Roman , your opinion ?
>
> Andrey
>
>>     /* Only supports eDP */
>>     if (pipe_ctx->stream->sink->link->connector_signal !=
>> SIGNAL_TYPE_EDP)
>>         return false;
>>
>> Suggest add some code to deal with the case that the for loop doesn't
>> find what it is looking for and so pipe_ctx is NULL.
>>
>> Regards
>>
>> David Binderman
>>
>> _______________________________________________
>> amd-gfx mailing list
>> [email protected]
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx