- ifnet.if_output() should be called without ifnet.if_serializer being
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Wed, 28 May 2008 12:11:13 +0000 (12:11 +0000)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Wed, 28 May 2008 12:11:13 +0000 (12:11 +0000)
commit57dff79c6525f0e2869a026023ec678d655456f3
treef3bc6ad99fcd7c6b6ca49a4f34c14daf69f095e9
parentbdeb8fff50531e95bed4e8aaf426c7204c45e88a
- ifnet.if_output() should be called without ifnet.if_serializer being
  held.  Add assertion about it in ether_output().
- ether_output_frame() should be called without the ifnet.if_serializer
  being held.  Add assertion in it.
- arp_ifinit() will be called with ifnet.if_serializer being held.  To
  prevent serializer from recursion, ifnet.if_serializer is released
  before calling arprequest(), which supposes caller does not hold output
  iface's serializer.
- ifnet.if_serializer can't be held when calling arp_ifinit2().

Reported-by: dillon@
sys/net/if.c
sys/net/if_ethersubr.c
sys/netgraph/ether/ng_ether.c
sys/netgraph/fec/ng_fec.c
sys/netinet/if_ether.c
sys/netinet/ip_carp.c