On 10/24/25 10:01 AM, Eelco Chaudron wrote:
> 
> 
> On 17 Oct 2025, at 19:11, Ilya Maximets wrote:
> 
>> This annotation never worked on structure fields, but it does now with
>> clang 21.  The problem is that structures like cmap or rculist are
>> designed for lockless access for readers and so we're not holding any
>> locks while reading.  That makes new clang generate thread-safety
>> warnings:
>>
>>   lib/dpif-netdev.c:3632:40:
>>     warning: reading the value pointed to by 'flow_table' requires
>>     holding any mutex [-Wthread-safety-analysis]
>>    3632 |                                  &pmd->flow_table) {
>>         |                                        ^
>>
>> Signed-off-by: Ilya Maximets <[email protected]>
> 
> Thanks for fixing these. The change looks good to me and tested with clang21.
> Two nits below ;)
> 
> Cheers,
> Eelco
> 
> Acked-by: Eelco Chaudron <[email protected]>
> 
> 
> <snip>
> 
>> diff --git a/lib/dpif-netdev-private-dpcls.h 
>> b/lib/dpif-netdev-private-dpcls.h
>> index 2a9279437..03f07c621 100644
>> --- a/lib/dpif-netdev-private-dpcls.h
>> +++ b/lib/dpif-netdev-private-dpcls.h
>> @@ -66,7 +66,7 @@ uint32_t (*dpcls_subtable_lookup_func)(struct 
>> dpcls_subtable *subtable,
>>  /* A set of rules that all have the same fields wildcarded. */
>>  struct dpcls_subtable {
>>      /* The fields are only used by writers. */
>> -    struct cmap_node cmap_node OVS_GUARDED; /* Within dpcls 
>> 'subtables_map'. */
>> +    struct cmap_node cmap_node; /* Within dpcls 'subtables_map'. */
> 
> Maybe add one space to align the comment with the ones below?

OK.

> 
> <snip>
> 
>> diff --git a/lib/dpif-netdev-private-thread.h 
>> b/lib/dpif-netdev-private-thread.h
>> index 8715b3837..1992ba44b 100644
>> --- a/lib/dpif-netdev-private-thread.h
>> +++ b/lib/dpif-netdev-private-thread.h
>> @@ -92,13 +92,13 @@ struct dp_netdev_pmd_thread {
>>       * made while still holding the 'flow_mutex'.
>>       */
>>      struct ovs_mutex flow_mutex;
>> -    struct cmap flow_table OVS_GUARDED; /* Flow table. */
>> -    struct cmap simple_match_table OVS_GUARDED; /* Flow table with simple
>> -                                                   match flows only. */
>> +    struct cmap flow_table; /* Flow table. */
>> +    struct cmap simple_match_table; /* Flow table with simple
>> +                                     *  match flows only. */
> 
> Remove space before match to align comments. Or maybe change the comment to 
> fit on a single line;
> 
>   struct cmap simple_match_table; /* Flow table with simple match flows. */
> 

I think, the word 'only' is carrying some weight here, so I fixed the double
space, but kept it to be two lines.

With that, applied and backported down to 3.3.

Thanks!

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to