freebsd-skq/sys/netinet
tuexen cfa2934865 MFC r258574:
Only initialize some mutexes for the default VNET.

In r208160, sctp_it_ctl was made a global variable, across all VNETs.
However, sctp_init() is called for every VNET that is created.  This results
in the same global mutexes which are part of sctp_it_ctl being initialized.  This can result
in crashes if many jails are created.

To reproduce the problem:
  (1)  Take a GENERIC kernel config, and add options for: VIMAGE, WITNESS,
       INVARIANTS.
  (2)  Run this command in a loop:
       jail -l -u root -c path=/ name=foo persist vnet && jexec foo ifconfig lo0 127.0.0.1/8 && jail -r foo

       (see http://lists.freebsd.org/pipermail/freebsd-current/2010-November/021280.html )

Witness will warn about the same mutex being initialized.

Fix the problem by only initializing these mutexes in the default VNET.

MFC r258765:

In
http://svnweb.freebsd.org/changeset/base/258221
I introduced a bug which initialized global locks
whenever the SCTP stack initialized. This was fixed in
http://svnweb.freebsd.org/changeset/base/258574
by rodrigc@. He just initialized the locks for
the default vnet. This fix reverts to the old
behaviour before r258221, which explicitly makes
sure it is only called once, because this works also on
other platforms.

Approved by: re@ (gjb)
2013-12-03 20:55:37 +00:00
..
cc Import an implementation of the CAIA Delay-Gradient (CDG) congestion control 2013-07-02 08:44:56 +00:00
khelp The TCP PAWS fix for kernels with fast tick rates (r231767) changed the TCP 2012-08-17 01:49:51 +00:00
libalias In m_megapullup() instead of reserving some space at the end of packet, 2013-03-17 07:37:10 +00:00
accf_data.c
accf_dns.c
accf_http.c
cc.h
icmp6.h Migrate structs in6_ifstat and icmp6_ifstat to PCPU counters. 2013-07-09 09:59:46 +00:00
icmp_var.h Remove most of the remaining sysctl name list macros. They were only 2013-08-26 18:16:05 +00:00
if_atm.c Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_atm.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_ether.c Add m_clrprotoflags() to clear protocol specific mbuf flags at up and 2013-08-19 13:27:32 +00:00
if_ether.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
igmp_var.h Remove most of the remaining sysctl name list macros. They were only 2013-08-26 18:16:05 +00:00
igmp.c Restructure the mbuf pkthdr to make it fit for upcoming capabilities and 2013-08-24 19:51:18 +00:00
igmp.h
in_cksum.c nobody uses this file except the userspace ipfw code, but the cast 2012-07-31 08:04:49 +00:00
in_debug.c
in_gif.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
in_gif.h
in_kdtrace.c Add a separate translator for headers passed to the TCP probes in the 2013-10-02 17:14:12 +00:00
in_kdtrace.h Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
in_mcast.c Fix an integer overflow in computing the size of a temporary buffer 2013-08-22 00:51:37 +00:00
in_pcb.c A complete duplication of binding should be allowed if on both new and 2013-07-12 19:08:33 +00:00
in_pcb.h In r227207, to fix the issue with possible NULL inp_socket pointer 2013-07-04 18:38:00 +00:00
in_pcbgroup.c
in_proto.c Bunch of fixes to pfsync(4) module load/unload: 2012-01-09 08:50:22 +00:00
in_rmx.c Cleanup documentation: cloning route support has been removed in r186119. 2012-10-13 09:31:01 +00:00
in_systm.h
in_var.h Back out r249318, r249320 and r249327 due to a heisenbug most 2013-05-06 16:42:18 +00:00
in.c Migrate structs arpstat, icmpstat, mrtstat, pimstat and udpstat to PCPU 2013-07-09 09:50:15 +00:00
in.h Remove most of the remaining sysctl name list macros. They were only 2013-08-26 18:16:05 +00:00
ip6.h Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
ip_carp.c Relese the interface in the last. 2013-09-08 18:19:40 +00:00
ip_carp.h Migrate struct carpstats to PCPU counters. 2013-07-09 10:02:51 +00:00
ip_divert.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip_divert.h
ip_dummynet.h s/lenght/length/ in comments 2012-08-07 07:52:25 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
ip_fw.h Add ipfw support for setting/matching DiffServ codepoints (DSCP). 2013-03-20 10:35:33 +00:00
ip_gre.c Add IFF_MONITOR support to gre(4). 2013-05-11 19:05:38 +00:00
ip_gre.h
ip_icmp.c Migrate structs arpstat, icmpstat, mrtstat, pimstat and udpstat to PCPU 2013-07-09 09:50:15 +00:00
ip_icmp.h
ip_id.c Back out r249318, r249320 and r249327 due to a heisenbug most 2013-05-06 16:42:18 +00:00
ip_input.c Unregister inet/inet6 pfil hooks on vnet destroy. 2013-09-13 18:45:10 +00:00
ip_ipsec.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip_ipsec.h
ip_mroute.c Use LIST_FOREACH_SAFE() instead of doing it by hand. 2013-09-05 14:26:37 +00:00
ip_mroute.h Migrate structs arpstat, icmpstat, mrtstat, pimstat and udpstat to PCPU 2013-07-09 09:50:15 +00:00
ip_options.c - Replace compat macros with function calls. 2013-03-16 08:58:28 +00:00
ip_options.h In ip_stripoptions(): 2012-10-12 09:24:24 +00:00
ip_output.c Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
ip_var.h Move the global M_SKIP_FIREWALL mbuf flags to a protocol layer specific 2013-08-19 11:08:36 +00:00
ip.h Add ToS definitions for DiffServ Codepoints as per RFC2474. 2012-05-04 21:00:32 +00:00
pim_var.h Remove most of the remaining sysctl name list macros. They were only 2013-08-26 18:16:05 +00:00
pim.h
raw_ip.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
sctp_asconf.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_asconf.h Pass the src and dst address of a received packet explicitly around. 2012-06-28 16:01:08 +00:00
sctp_auth.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_auth.h MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_bsd_addr.c MFC r258574: 2013-12-03 20:55:37 +00:00
sctp_bsd_addr.h Do packet logging in a consistent way. 2012-06-24 21:25:54 +00:00
sctp_cc_functions.c Get rid of a gcc'ism. 2012-09-06 07:03:56 +00:00
sctp_constants.h MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_crc32.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_crc32.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_dtrace_declare.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_dtrace_define.h Specify SDT probe argument types in the probe definition itself rather than 2013-08-15 04:08:55 +00:00
sctp_header.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_indata.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_indata.h Code cleanups. 2013-07-03 18:48:43 +00:00
sctp_input.c Provide human readable debug output. 2013-08-25 12:44:03 +00:00
sctp_input.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_lock_bsd.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_os_bsd.h All changes affect only SCTP-AUTH: 2013-09-02 22:48:41 +00:00
sctp_os.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_output.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_output.h Cleanup the handling of address scopes. Announce in the INIT/INIT-ACK 2013-02-09 17:26:14 +00:00
sctp_pcb.c MFC r258574: 2013-12-03 20:55:37 +00:00
sctp_pcb.h Make the features a 64-bit value instead of 32-bit. 2013-08-12 13:52:15 +00:00
sctp_peeloff.c Add support for sctp_peeloff() also in the front states of the 2012-11-26 16:44:03 +00:00
sctp_peeloff.h Remove unused function. 2012-11-25 14:25:08 +00:00
sctp_ss_functions.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_structs.h Remove redundant field pr_sctp_on. 2013-09-03 19:31:59 +00:00
sctp_sysctl.c Export the inpcb features as a 64-bit entity. 2013-08-22 20:29:57 +00:00
sctp_sysctl.h Fix a bug were only 2048 streams where usable even though more than 2013-07-05 10:08:49 +00:00
sctp_timer.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_timer.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_uio.h All changes affect only SCTP-AUTH: 2013-09-02 22:48:41 +00:00
sctp_usrreq.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctp_var.h Whitespace changes due to upstream integration of SCTP changes in the 2012-10-29 20:47:32 +00:00
sctp.h Make the features a 64-bit value instead of 32-bit. 2013-08-12 13:52:15 +00:00
sctputil.c MFC r256556: 2013-11-21 23:00:09 +00:00
sctputil.h Add support for SCTP/UDP/IPV6. 2012-11-17 20:04:04 +00:00
siftr.c The hashmask returned by hashinit() is a valid index in the returned hash array. 2013-03-07 04:42:20 +00:00
tcp_debug.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c - Update cachelimit after hashsize and bucketlimit were set. 2012-10-19 14:00:03 +00:00
tcp_hostcache.h
tcp_input.c MFC r256920: 2013-10-29 21:00:54 +00:00
tcp_lro.c Merge r254336 from user/np/cxl_tuning. 2013-08-28 23:00:34 +00:00
tcp_lro.h Merge r254336 from user/np/cxl_tuning. 2013-08-28 23:00:34 +00:00
tcp_offload.c - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
tcp_offload.h - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
tcp_output.c Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
tcp_reass.c uma_zone_set_max() directly returns the rounded effective zone 2013-02-01 14:21:09 +00:00
tcp_sack.c
tcp_seq.h Fix PAWS (Protect Against Wrapped Sequence numbers) in cases when 2012-02-15 16:09:56 +00:00
tcp_subr.c Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
tcp_syncache.c Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
tcp_syncache.h Introduce spares in the TCP syncache and timewait structures 2013-09-21 10:01:51 +00:00
tcp_timer.c - Make callout(9) tickless, relying on eventtimers(4) as backend for 2013-03-04 11:09:56 +00:00
tcp_timer.h Add DELACK to list of timers. 2012-11-27 19:07:28 +00:00
tcp_timewait.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
tcp_usrreq.c Implement the ip, tcp, and udp DTrace providers. The probe definitions use 2013-08-25 21:54:41 +00:00
tcp_var.h Introduce spares in the TCP syncache and timewait structures 2013-09-21 10:01:51 +00:00
tcp.h Add placeholder constants to reserve a portion of the socket option 2013-02-01 15:32:20 +00:00
tcpip.h
toecore.c Teach toe_l2_resolve to resolve IPv6 destinations too. 2013-01-26 00:57:29 +00:00
toecore.h Correctly handle the case where an inp has already been dropped by the time 2012-08-21 18:09:33 +00:00
udp_usrreq.c The second last argument of udp:::receive is supposed to contain the 2013-08-26 00:28:57 +00:00
udp_var.h Remove most of the remaining sysctl name list macros. They were only 2013-08-26 18:16:05 +00:00
udp.h Add placeholder constants to reserve a portion of the socket option 2013-02-01 15:32:20 +00:00