freebsd-nq/sys/netinet
Matt Macy 2269988749 NULL out cc_data in pluggable TCP {cc}_cb_destroy
When ABE was added (rS331214) to NewReno and leak fixed (rS333699) , it now has
a destructor (newreno_cb_destroy) for per connection state. Other congestion
controls may allocate and free cc_data on entry and exit, but the field is
never explicitly NULLed if moving back to NewReno which only internally
allocates stateful data (no entry contstructor) resulting in a situation where
newreno_cb_destory might be called on a junk pointer.

 -    NULL out cc_data in the framework after calling {cc}_cb_destroy
 -    free(9) checks for NULL so there is no need to perform not NULL checks
     before calling free.
 -    Improve a comment about NewReno in tcp_ccalgounload

This is the result of a debugging session from Jason Wolfe, Jason Eggleston,
and mmacy@ and very helpful insight from lstewart@.

Submitted by: Kevin Bowling
Reviewed by: lstewart
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D16282
2018-07-22 05:37:58 +00:00
..
cc NULL out cc_data in pluggable TCP {cc}_cb_destroy 2018-07-22 05:37:58 +00:00
khelp sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
libalias Remove a duplicate check. 2018-07-11 14:54:56 +00:00
netdump UDP: further performance improvements on tx 2018-05-23 21:02:14 +00:00
tcp_stacks Bump the ICMP echo limits to match the RFC 2018-07-18 22:49:53 +00:00
accf_data.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
accf_dns.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
accf_http.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
icmp6.h Correct the comment describing badrs which is bad router solicitiation, 2017-12-29 07:23:18 +00:00
icmp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
if_ether.c ifnet: Replace if_addr_lock rwlock with epoch + mutex 2018-05-18 20:13:34 +00:00
if_ether.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp_var.h Separate list manipulation locking from state change in multicast 2018-05-02 19:36:29 +00:00
igmp.c UDP: further performance improvements on tx 2018-05-23 21:02:14 +00:00
igmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_cksum.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_debug.c CK: update consumers to use CK macros across the board 2018-05-24 23:21:23 +00:00
in_fib.c Switch RIB and RADIX_NODE_HEAD lock from rwlock(9) to rmlock(9). 2018-06-16 08:26:23 +00:00
in_fib.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
in_gif.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
in_jail.c Move most of the contents of opt_compat.h to opt_global.h. 2018-04-06 17:35:35 +00:00
in_kdtrace.c Use tcpinfoh_t for TCP headers in the tcp:::debug-{drop,input} probes. 2018-01-25 15:35:34 +00:00
in_kdtrace.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_mcast.c - Fix a double unlock in inp_block_unblock_source() and 2018-07-04 06:47:34 +00:00
in_pcb.c Use uintptr_t alone when assigning to kvaddr_t variables. 2018-07-10 13:03:06 +00:00
in_pcb.h Make struct xinpcb and friends word-size independent. 2018-07-05 13:13:48 +00:00
in_pcbgroup.c Fix PCBGROUPS build post CK conversion of pcbinfo 2018-06-13 23:19:54 +00:00
in_prot.c Move most of the contents of opt_compat.h to opt_global.h. 2018-04-06 17:35:35 +00:00
in_proto.c Remove empty encap_init() function. 2018-05-29 12:32:08 +00:00
in_rmx.c Code duplication but rib_head is special. Not found an easy way to go 2016-02-03 21:56:51 +00:00
in_rss.c
in_rss.h
in_systm.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_var.h UDP: further performance improvements on tx 2018-05-23 21:02:14 +00:00
in.c Move invoking of callout_stop(&lle->lle_timer) into llentry_free(). 2018-07-17 11:33:23 +00:00
in.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip6.h carp: Set DSCP value CS7 2018-07-01 08:37:07 +00:00
ip_carp.c carp: Set DSCP value CS7 2018-07-01 08:37:07 +00:00
ip_carp.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_divert.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
ip_divert.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_dummynet.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_ecn.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_ecn.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_encap.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
ip_encap.h Rework IP encapsulation handling code. 2018-06-05 20:51:01 +00:00
ip_fastfwd.c netpfil: Introduce PFIL_FWD flag 2018-03-23 16:56:44 +00:00
ip_fw.h Add "record-state", "set-limit" and "defer-action" rule options to ipfw. 2018-07-09 11:35:18 +00:00
ip_gre.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
ip_icmp.c Bump the ICMP echo limits to match the RFC 2018-07-18 22:49:53 +00:00
ip_icmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_id.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_input.c UDP: further performance improvements on tx 2018-05-23 21:02:14 +00:00
ip_mroute.c Rework IP encapsulation handling code. 2018-06-05 20:51:01 +00:00
ip_mroute.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_options.c UDP: further performance improvements on tx 2018-05-23 21:02:14 +00:00
ip_options.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_output.c There was quite a bit of feedback on r336282 that has led to the 2018-07-14 23:53:51 +00:00
ip_reass.c Do not generate illegal mbuf chains during IP fragment reassembly. Only 2018-01-24 05:09:21 +00:00
ip_var.h ip(6)_freemoptions: defer imo destruction to epoch callback task 2018-05-20 00:22:28 +00:00
ip.h carp: Set DSCP value CS7 2018-07-01 08:37:07 +00:00
pim_var.h Rework IP encapsulation handling code. 2018-06-05 20:51:01 +00:00
pim.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
raw_ip.c Removed pointless NULL check 2018-07-10 08:05:32 +00:00
sctp_asconf.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_asconf.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_auth.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_auth.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_bsd_addr.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_bsd_addr.h Revert https://svnweb.freebsd.org/changeset/base/336503 2018-07-19 20:11:14 +00:00
sctp_cc_functions.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_constants.h Add constant for the PAD chunk as defined in RFC 4820. 2018-01-27 13:46:55 +00:00
sctp_crc32.c Revert https://svnweb.freebsd.org/changeset/base/336503 2018-07-19 20:11:14 +00:00
sctp_crc32.h When adding support for sending SCTP packets containing an ABORT chunk 2017-12-26 12:35:02 +00:00
sctp_dtrace_declare.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_dtrace_define.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_header.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_indata.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_indata.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_input.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_input.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_lock_bsd.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_os_bsd.h Move most of the contents of opt_compat.h to opt_global.h. 2018-04-06 17:35:35 +00:00
sctp_os.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_output.c Revert https://svnweb.freebsd.org/changeset/base/336503 2018-07-19 20:11:14 +00:00
sctp_output.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_pcb.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_pcb.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_peeloff.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_peeloff.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_ss_functions.c Revert https://svnweb.freebsd.org/changeset/base/336503 2018-07-19 20:11:14 +00:00
sctp_structs.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_syscalls.c netinet silence warnings 2018-05-19 05:56:21 +00:00
sctp_sysctl.c Revert https://svnweb.freebsd.org/changeset/base/336503 2018-07-19 20:11:14 +00:00
sctp_sysctl.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_timer.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_timer.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_uio.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_usrreq.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_var.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctputil.c Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctputil.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
siftr.c Create a new macro for static DPCPU data. 2018-07-05 17:13:37 +00:00
tcp_debug.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_debug.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_fastopen.c Add support for printing the TCP FO client-side cookie cache via the 2018-07-10 10:50:43 +00:00
tcp_fastopen.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_fsm.h Revert r334843, and partially revert r335180. 2018-06-23 06:53:53 +00:00
tcp_hostcache.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_hostcache.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_hpts.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
tcp_hpts.h epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
tcp_input.c Use appropriate MSS value when populating the TCP FO client cookie cache 2018-07-10 10:42:48 +00:00
tcp_log_buf.c Clean up some debugging code left in tcp_log_buf.c from r331347. 2018-04-10 15:51:37 +00:00
tcp_log_buf.h This commit brings in a new refactored TCP stack called Rack. 2018-06-07 18:18:13 +00:00
tcp_lro.c Update tcp_lro with tested bugfixes from Netflix and LLNW: 2018-03-09 00:08:43 +00:00
tcp_lro.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_offload.c Revert r334843, and partially revert r335180. 2018-06-23 06:53:53 +00:00
tcp_offload.h Add a hook to allow the toedev handling an offloaded connection to 2018-04-03 01:08:54 +00:00
tcp_output.c Revert r334843, and partially revert r335180. 2018-06-23 06:53:53 +00:00
tcp_pcap.c The TCPPCAP debugging feature caches recently-used mbufs for use in 2016-07-06 16:17:13 +00:00
tcp_pcap.h The TCPPCAP debugging feature caches recently-used mbufs for use in 2016-07-06 16:17:13 +00:00
tcp_reass.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_sack.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_seq.h r330675 introduced an extra window check in the LRO code to ensure it 2018-04-03 13:54:38 +00:00
tcp_subr.c NULL out cc_data in pluggable TCP {cc}_cb_destroy 2018-07-22 05:37:58 +00:00
tcp_syncache.c When retransmitting TCP SYN-ACK segments with the TCP timestamp option 2018-06-15 12:28:43 +00:00
tcp_syncache.h When retransmitting TCP SYN-ACK segments with the TCP timestamp option 2018-06-15 12:28:43 +00:00
tcp_timer.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
tcp_timer.h epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
tcp_timewait.c epoch(9): allow preemptible epochs to compose 2018-07-04 02:47:16 +00:00
tcp_usrreq.c NULL out cc_data in pluggable TCP {cc}_cb_destroy 2018-07-22 05:37:58 +00:00
tcp_var.h Make struct xinpcb and friends word-size independent. 2018-07-05 13:13:48 +00:00
tcp.h This commit brings in a new refactored TCP stack called Rack. 2018-06-07 18:18:13 +00:00
tcpip.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
toecore.c Add a hook to allow the toedev handling an offloaded connection to 2018-04-03 01:08:54 +00:00
toecore.h Add a hook to allow the toedev handling an offloaded connection to 2018-04-03 01:08:54 +00:00
udp_usrreq.c Set the IPv4 version in the IP header for UDP and UDPLite. 2018-07-21 02:14:13 +00:00
udp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udplite.h