uninitialized variable in dcn10 code

Harry Wentland harry.wentland at amd.com
Tue Nov 14 14:41:05 UTC 2017


On 2017-11-14 09:33 AM, Michel Dänzer wrote:
> On 14/11/17 01:29 PM, Tom St Denis wrote:
>> Hi Harry,
>>
>> At display/dc/dcn10/dcn10_hw_sequencer.c:2140
>>
>>     if (num_planes > 0) {
>>         struct dc_stream_state *stream_for_cursor;
>>
>>         program_all_pipe_in_tree(dc, top_pipe_to_program, context);
>>
>>         for (i = 0; i < dc->res_pool->pipe_count; i++) {
>>             struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i];
>>
>>             if (stream == pipe_ctx->stream) {
>>                 stream_for_cursor = pipe_ctx->stream;
>>                 break;
>>             }
>>         }
>>
>>         /* TODO: this is a hack w/a for switching from mpo to pipe split */
>>         if (stream_for_cursor->cursor_attributes.address.quad_part != 0) {
>>             struct dc_cursor_position position = { 0 };
>>
>>             dc_stream_set_cursor_position(stream_for_cursor, &position);
>>             dc_stream_set_cursor_attributes(stream_for_cursor,
>>                 &stream_for_cursor->cursor_attributes);
>>         }
>>     }
>>
>> The variable "stream_for_cursor" could be used uninitialized in the TODO
>> block.  The pointer should be probably initialized to NULL at the top.
> 
> BTW, the compiler points this out:
> 
> drivers/gpu/drm//amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer.c: In function ‘dcn10_apply_ctx_for_surface’:
> drivers/gpu/drm//amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer.c:2146:5: warning: ‘stream_for_cursor’ may be used uninitialized in this function [-Wmaybe-uninitialized]
>      &stream_for_cursor->cursor_attributes);
>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 

Yes, newer gcc (~5.8) does. We were still running Ubuntu 14.04 on our pre-submission build system and its gcc version didn't catch this. Jordan upgraded us to Ubuntu 16.04 with newer gcc that should catch this now.

Harry

> 


More information about the amd-gfx mailing list