[Mesa-dev] [PATCH] spirv: avoid infinite loop / freeze in vtn_cfg_walk_blocks()

Eero Tamminen eero.t.tamminen at intel.com
Fri Dec 22 09:46:31 UTC 2017


Hi,

On 22.12.2017 11:42, Eero Tamminen wrote:
> On 21.12.2017 22:19, Mark Janes wrote:
>> This patch doesn't apply to master as formatted.
> 
> It was against master.  Could you try the attached patch instead?

Argh, I meant the patch attached to this mail.  Sorry again.


	- Eero

> I assume I had screwed something when I inlined it to my earlier mail. :-/
> 
> 
>> I've reverted the bisected commit, since it disables testing on master.
> 
> My fix is rather obvious, just moving few lines, to make sure loop is 
> incremented every round, like it was before the bad commit.
> 
> 
>      - Eero
> 
>> Eero Tamminen <eero.t.tamminen at intel.com> writes:
>>
>>> Fixes: 9702fac68e (spirv: consider bitsize when handling OpSwitch cases)
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104359
>>> ---
>>>    src/compiler/spirv/vtn_cfg.c | 14 +++++++-------
>>>    1 file changed, 7 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c
>>> index 9c4cbe2..3d5de37 100644
>>> --- a/src/compiler/spirv/vtn_cfg.c
>>> +++ b/src/compiler/spirv/vtn_cfg.c
>>> @@ -549,19 +549,19 @@ vtn_cfg_walk_blocks(struct vtn_builder *b, struct
>>> list_head *cf_list,
>>>                struct vtn_block *case_block =
>>>                   vtn_value(b, *w, vtn_value_type_block)->block;
>>>
>>> -            if (case_block == break_block)
>>> -               continue;
>>> -
>>> -            vtn_assert(case_block->switch_case);
>>> -
>>> -            vtn_order_case(swtch, case_block->switch_case);
>>> -
>>>                if (bitsize <= 32) {
>>>                   w += 2;
>>>                } else {
>>>                   assert(bitsize == 64);
>>>                   w += 3;
>>>                }
>>> +
>>> +            if (case_block == break_block)
>>> +               continue;
>>> +
>>> +            vtn_assert(case_block->switch_case);
>>> +
>>> +            vtn_order_case(swtch, case_block->switch_case);
>>>             }
>>>
>>>             enum vtn_branch_type branch_type =
>>> -- 
>>> 2.7.4
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> 
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Avoid-infinite-loop-freeze-in-vtn_cfg_walk_blocks.patch
Type: text/x-patch
Size: 1452 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171222/85da6cc0/attachment-0001.bin>


More information about the mesa-dev mailing list