[Mesa-dev] [PATCH] ilo: Ensure array 'shaders' in fully initialized.
Vinson Lee
vlee at freedesktop.org
Fri May 31 00:48:06 PDT 2013
On Fri, May 31, 2013 at 12:35 AM, Chia-I Wu <olvaffe at gmail.com> wrote:
> On Fri, May 31, 2013 at 2:59 PM, Vinson Lee <vlee at freedesktop.org> wrote:
>> Fixes "Uninitialized pointer read" defect reported by Coverity.
> This looks like a false alarm, as shaders are not read when
> num_shaders is zero. Does the report give more details?
>
1. var_decl: Declaring variable "shaders" without initializer.
86 struct ilo_shader *shaders[PIPE_SHADER_TYPES];
87 int num_shaders = 0, i;
88
2. Condition "i < 4", taking true branch
5. Condition "i < 4", taking true branch
8. Condition "i < 4", taking false branch
89 for (i = 0; i < PIPE_SHADER_TYPES; i++) {
90 /* no state bound */
3. Condition "!sh[i].state", taking true branch
6. Condition "!sh[i].state", taking true branch
91 if (!sh[i].state)
4. Continuing loop
7. Continuing loop
92 continue;
93
94 /* switch variant if the shader or the states it depends on changed */
95 if (ilo->dirty & (sh[i].dirty | sh[i].deps)) {
96 struct ilo_shader_variant variant;
97
98 ilo_shader_variant_init(&variant, &sh[i].state->info, ilo);
99 ilo_shader_state_use_variant(sh[i].state, &variant);
100 }
101
102 shaders[num_shaders++] = sh[i].state->shader;
103 }
104
Uninitialized pointer read (UNINIT)
9. uninit_use_in_call: Using uninitialized element of array
"shaders" when calling "ilo_shader_cache_set(struct ilo_shader_cache
*, struct ilo_shader **, int)".
105 ilo_shader_cache_set(ilo->shader_cache, shaders, num_shaders);
/src/gallium/drivers/ilo/ilo_shader.c
556ilo_shader_cache_set(struct ilo_shader_cache *shc,
557 struct ilo_shader **shaders,
558 int num_shaders)
559{
560 int new_cur, i;
561
562 /* calculate the space needed */
563 new_cur = shc->cur;
1. Condition "i < num_shaders", taking true branch
564 for (i = 0; i < num_shaders; i++) {
2. read_parm: Reading a parameter value.
565 if (shaders[i]->cache_seqno != shc->seqno)
566 new_cur = align(new_cur, 64) + shaders[i]->kernel_size;
567 }
>> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
>> ---
>> src/gallium/drivers/ilo/ilo_state.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/gallium/drivers/ilo/ilo_state.c b/src/gallium/drivers/ilo/ilo_state.c
>> index 33da429..f071292 100644
>> --- a/src/gallium/drivers/ilo/ilo_state.c
>> +++ b/src/gallium/drivers/ilo/ilo_state.c
>> @@ -83,7 +83,7 @@ finalize_shader_states(struct ilo_context *ilo)
>> .deps = 0,
>> },
>> };
>> - struct ilo_shader *shaders[PIPE_SHADER_TYPES];
>> + struct ilo_shader *shaders[PIPE_SHADER_TYPES] = { 0 };
>> int num_shaders = 0, i;
>>
>> for (i = 0; i < PIPE_SHADER_TYPES; i++) {
>> --
>> 1.8.2.1
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>
>
> --
> olv at LunarG.com
More information about the mesa-dev
mailing list