ok
> On 8 Nov 2022, at 21:38, Klemens Nanni <k...@openbsd.org> wrote:
>
> On Tue, Nov 08, 2022 at 09:34:36PM +0300, Vitaliy Makkoveev wrote:
>>> On 8 Nov 2022, at 21:26, Klemens Nanni <k...@openbsd.org> wrote:
>>>
>>> On Tue, Nov 08, 2022 at 09:18:47PM +0300, Vitaliy Makkoveev wrote:
>>>>> On 8 Nov 2022, at 21:08, Klemens Nanni <k...@openbsd.org> wrote:
>>>>>
>>>>> Now properly. How about a single comment block at the top instead of
>>>>> repeating it for every struct?
>>>>>
>>>>>
>>>>
>>>> You forgot to mark [I] `if_cloners’ within net/if.c.
>>>
>>> Like this? First locking commit in if.c.
>>>
>>>
>>
>> Please, do this in consistency with other places:
>>
>> LIST_HEAD(, ipsec_ids) ipsp_ids_gc_list =
>> LIST_HEAD_INITIALIZER(ipsp_ids_gc_list); /* [F] */
>
> OK?
>
> diff --git a/sys/net/if.c b/sys/net/if.c
> index 58a972b802c..a7b0b9bb8a3 100644
> --- a/sys/net/if.c
> +++ b/sys/net/if.c
> @@ -228,8 +228,9 @@ void if_idxmap_remove(struct ifnet *);
>
> TAILQ_HEAD(, ifg_group) ifg_head = TAILQ_HEAD_INITIALIZER(ifg_head);
>
> -LIST_HEAD(, if_clone) if_cloners = LIST_HEAD_INITIALIZER(if_cloners);
> -int if_cloners_count;
> +LIST_HEAD(, if_clone) if_cloners =
> + LIST_HEAD_INITIALIZER(if_cloners); /* [I] list of clonable interfaces */
> +int if_cloners_count; /* [I] number of clonable interfaces */
>
> struct rwlock if_cloners_lock = RWLOCK_INITIALIZER("clonelk");
>
> diff --git a/sys/net/if_var.h b/sys/net/if_var.h
> index 28514a0bfcd..6272be882f4 100644
> --- a/sys/net/if_var.h
> +++ b/sys/net/if_var.h
> @@ -73,6 +73,18 @@
> * interfaces. These routines live in the files if.c and route.c
> */
>
> +/*
> + * Locks used to protect struct members in this file:
> + * I immutable after creation
> + * d protection left do the driver
> + * c only used in ioctl or routing socket contexts (kernel lock)
> + * K kernel lock
> + * N net lock
> + *
> + * For SRP related structures that allow lock-free reads, the write lock
> + * is indicated below.
> + */
> +
> struct rtentry;
> struct ifnet;
> struct task;
> @@ -82,7 +94,7 @@ struct cpumem;
> * Structure describing a `cloning' interface.
> */
> struct if_clone {
> - LIST_ENTRY(if_clone) ifc_list; /* on list of cloners */
> + LIST_ENTRY(if_clone) ifc_list; /* [I] on list of cloners */
> const char *ifc_name; /* name of device, e.g. `gif' */
> size_t ifc_namelen; /* length of name */
>
> @@ -99,17 +111,6 @@ struct if_clone {
> .ifc_destroy = destroy,
> \
> }
>
> -/*
> - * Locks used to protect struct members in this file:
> - * I immutable after creation
> - * d protection left do the driver
> - * c only used in ioctl or routing socket contexts (kernel lock)
> - * K kernel lock
> - * N net lock
> - *
> - * For SRP related structures that allow lock-free reads, the write lock
> - * is indicated below.
> - */
> /*
> * Structure defining a queue for a network interface.
> *