On Thu, Mar 02, 2023 at 09:36:52AM +0000, Klemens Nanni wrote: > Used but not initialised: > > $ grep arp_list if_ether.c > LIST_ENTRY(llinfo_arp) la_list; /* [mN] global arp_list > */ > LIST_HEAD(, llinfo_arp) arp_list; /* [mN] list of all llinfo_arp > structures */ > /* Net lock is exclusive, no arp mutex needed for arp_list > here. */ > LIST_FOREACH_SAFE(la, &arp_list, la_list, nla) { > LIST_INSERT_HEAD(&arp_list, la, la_list); > > It only works because arp_list is global and thus zero initialised, so > > #define LIST_INIT(head) do { > \ > LIST_FIRST(head) = LIST_END(head); > \ > } while (0) > > is practically a NOOP, but we must not rely on that. > Use proper queue(9) init (in analogy to nd6_init() and nd6_list). > > OK?
I like to use LIST_HEAD_INITIALIZER(9) for consistency with other global list initializations in netinet/. ok mvs@ with this. > > Index: netinet/if_ether.c > =================================================================== > RCS file: /cvs/src/sys/netinet/if_ether.c,v > retrieving revision 1.256 > diff -u -p -r1.256 if_ether.c > --- netinet/if_ether.c 31 Jan 2023 13:41:54 -0000 1.256 > +++ netinet/if_ether.c 2 Mar 2023 09:19:53 -0000 > @@ -146,6 +146,7 @@ arpinit(void) > { > static struct timeout arptimer_to; > > + LIST_INIT(&arp_list); > pool_init(&arp_pool, sizeof(struct llinfo_arp), 0, > IPL_SOFTNET, 0, "arp", NULL); > >