On 11/23/22 15:01, Ilya Maximets wrote:
> On 11/21/22 16:54, Adrian Moreno wrote:
>>
>>
>> On 11/4/22 15:25, Ilya Maximets wrote:
>>> Some macros for rculist have no users and there are no unit tests
>>> specific to that library as well, so broken code wasn't spotted
>>> while updating to multi-variable iterators.
>>>
>>> Fixing multiple problems like missing commas, parenthesis, incorrect
>>> variable and macro names.
>>>
>>> Fixes: d293965d7b06 ("rculist: use multi-variable helpers for loop macros.")
>>> Reported-by: Subrata Nath <subrata.n...@nokia.com>
>>> Co-authored-by: Dumitru Ceara <dce...@redhat.com>
>>> Signed-off-by: Dumitru Ceara <dce...@redhat.com>
>>> Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>
>>> ---
>>>   lib/rculist.h | 18 +++++++++---------
>>>   1 file changed, 9 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/lib/rculist.h b/lib/rculist.h
>>> index c0d77acf9..9bb8cbf3e 100644
>>> --- a/lib/rculist.h
>>> +++ b/lib/rculist.h
>>> @@ -380,18 +380,18 @@ rculist_is_singleton_protected(const struct rculist 
>>> *list)
>>>   #define RCULIST_FOR_EACH_REVERSE_PROTECTED(ITER, MEMBER, RCULIST)         
>>>     \
>>>       for (INIT_MULTIVAR(ITER, MEMBER, (RCULIST)->prev, struct rculist);    
>>>     \
>>>            CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST));   
>>>     \
>>> -         UPDATE_MULTIVAR(ITER, ITER_VAR(VAR).prev))
>>> +         UPDATE_MULTIVAR(ITER, ITER_VAR(ITER)->prev))
>>>     #define RCULIST_FOR_EACH_REVERSE_PROTECTED_CONTINUE(ITER, MEMBER, 
>>> RCULIST)    \
>>>       for (INIT_MULTIVAR(ITER, MEMBER, (ITER)->MEMBER.prev, struct 
>>> rculist);    \
>>>            CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST));   
>>>     \
>>> -         UPDATE_MULTIVAR(ITER, ITER_VAR(VAR).prev))
>>> +         UPDATE_MULTIVAR(ITER, ITER_VAR(ITER)->prev))
>>>
>>
>> There's another hidden problem with the REVERSE iterators that has not 
>> popped up yet: They access 'prev' member directly which will not compile 
>> when using clang's thread-safety macros because of a fake mutex specifically 
>> added to avoid it.
>> Since the macros are PROTECTED it should be OK to use 
>> rculist_back_protected() instead.
> 
> Hmm, interesting.
> 
>>
>> I have written a unit test for rculist that I was planning to post soon. If 
>> you prefer I can fix this at the same time.
> 
> If you can fix that in your patch that would be easier, I think.
> I'll try to merge the current fix somewhere soon (Just got back
> from PTO today).

Applied now and backported down to 2.13.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to