As a step towards per inpcb or socket locks, remove the net lock
authorbluhm <bluhm@openbsd.org>
Thu, 20 Sep 2018 18:59:10 +0000 (18:59 +0000)
committerbluhm <bluhm@openbsd.org>
Thu, 20 Sep 2018 18:59:10 +0000 (18:59 +0000)
commit8a7b43ff23c5924c9f444901961e4773621c2482
treed2ede48d22231569aff2e3cabd5b4ac382c52de8
parent352fd8b3a1bec5dc3d7e96997c3e4685c4f61c2f
As a step towards per inpcb or socket locks, remove the net lock
for netstat -a.  Introduce a global mutex that protects the tables
and hashes for the internet PCBs.  To detect detached PCB, set its
inp_socket field to NULL.  This has to be protected by a per PCB
mutex.  The protocol pointer has to be protected by the mutex as
netstat uses it.
Always take the kernel lock in in_pcbnotifyall() and in6_pcbnotify()
before the table mutex to avoid lock ordering problems in the notify
functions.
OK visa@
sys/kern/kern_sysctl.c
sys/netinet/in_pcb.c
sys/netinet/in_pcb.h
sys/netinet/ip_divert.c
sys/netinet/raw_ip.c
sys/netinet/tcp_subr.c
sys/netinet/udp_usrreq.c
sys/netinet6/in6_pcb.c
sys/netinet6/ip6_divert.c
sys/netinet6/raw_ip6.c