On 17 Oct 2025, at 19:11, Ilya Maximets wrote:

> '-Wuninitialized-const-pointer' complains about passing uninitialized
> data into a function via a const pointer.  That's a valid concern,
> since normally the function accepting a const argument wouldn't write
> to it, but will likely use the data.
>
> However, we do have some cases of such a coding pattern in OVS today
> and they generate a ton of warnings with clang 21.
>
> The main offenders of this are all the types of locks in OVS: mutex,
> rwlock, spinlock.  All the locking functions accept const pointers
> and then do a CONST_CAST inside.  This is useful for the cases where
> we have a lock protecting a structure and want to have some read-only
> function that accepts this structure, e.g.:
>
>   struct my_type {
>       struct ovs_mutex mutex;
>       int value;
>   };
>
>   int get_value(const struct my_type *p)
>   {
>       int res;
>
>       ovs_mutex_lock(&p->mutex);
>       res = p->value;
>       ovs_mutex_unlock(&p->mutex);
>
>       return res;
>   }
>
> If the ovs_mutex_lock() required non-const argument, then we'd have
> to use CONST_CAST for every lock/unlock, or we would have to make the
> original pointer 'p' non-const, cascading the change through all the
> callers of this "read-only" functions.
>
> However, it's totally reasonable for the mutex init and destroy to
> not have a constant argument, since we're explicitly trying to change
> it and the initialization and destruction likely not happening for
> the constant parent structure.
>
> Let's convert both init and destroy API for all the locks to accept
> non-const arguments.  This makes clang happy as we're no longer
> passing in the uninitialized locks as const.
>
> This technically changes the API, but we're relaxing the restriction,
> so it shouldn't be a concern.  All the code that used these functions
> before should still work fine.
>
> Signed-off-by: Ilya Maximets <[email protected]>

Thanks for the change Ilya, it makes sense to me.

Acked-by: Eelco Chaudron <[email protected]>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to