1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-21 11:13:30 +00:00
freebsd/sys/netinet
Bjoern A. Zeeb becba438d2 Plug reference leaks in the link-layer code ("new-arp") that previously
prevented the link-layer entry from being freed.

In both in.c and in6.c (though that code path seems to be basically dead)
plug a reference leak in case of a pending callout being drained.

In if_ether.c consistently add a reference before resetting the callout
and in case we canceled a pending one remove the reference for that.
In the final case in arptimer, before freeing the expired entry, remove
the reference again and explicitly call callout_stop() to clear the active
flag.

In nd6.c:nd6_free() we are only ever called from the callout function and
thus need to remove the reference there as well before calling into
llentry_free().

In if_llatbl.c when freeing entire tables make sure that in case we cancel
a pending callout to remove the reference as well.

Reviewed by:		qingli (earlier version)
MFC after:		10 days
Problem observed, patch tested by: simon on ipv6gw.f.o,
			Christian Kratzer (ck cksoft.de),
			Evgenii Davidov (dado korolev-net.ru)
PR:			kern/144564
Configurations still affected:	with options FLOWTABLE
2010-04-11 16:04:08 +00:00
..
ipfw Try to help with a virtualized dummynet after r206428. 2010-04-10 22:11:01 +00:00
libalias Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
accf_data.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
accf_dns.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
accf_http.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
icmp6.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
icmp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
if_atm.c
if_atm.h
if_ether.c Plug reference leaks in the link-layer code ("new-arp") that previously 2010-04-11 16:04:08 +00:00
if_ether.h Add arp_update_event. This replaces route_arp_update_event, which 2009-09-08 21:17:17 +00:00
igmp_var.h Update stats in struct igmpstat using two new macros: 2009-04-12 13:41:13 +00:00
igmp.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
igmp.h These are no longer referenced in the tree, so can be safely removed. 2009-06-10 18:12:15 +00:00
in_cksum.c
in_gif.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
in_gif.h
in_mcast.c Fix a few issues related to the legacy 4.4 BSD multicast APIs. 2010-04-10 12:05:31 +00:00
in_pcb.c Abstract out initialization of most aspects of struct inpcbinfo from 2010-03-14 18:59:11 +00:00
in_pcb.h Abstract out initialization of most aspects of struct inpcbinfo from 2010-03-14 18:59:11 +00:00
in_proto.c Split up ip_drain() into an outer lock and iterator part and 2010-02-20 19:59:52 +00:00
in_rmx.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
in_systm.h
in_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
in.c Plug reference leaks in the link-layer code ("new-arp") that previously 2010-04-11 16:04:08 +00:00
in.h Add definition of IPv6 mobility header's protocol number, as assigned by 2010-03-31 23:02:25 +00:00
ip6.h Start removing IPv6 Type 0 Routing header code. 2009-03-03 13:12:12 +00:00
ip_carp.c Complete the swap of carp(4) log levels and document the change. 2010-01-08 16:14:41 +00:00
ip_carp.h Update stats in struct carpstats using two new macros: CARPSTATS_ADD() 2009-04-12 14:19:37 +00:00
ip_divert.c Add pcb reference counting to the pcblist sysctl handler functions 2010-03-17 18:28:27 +00:00
ip_divert.h Various cleanup done in ipfw3-head branch including: 2010-01-04 19:01:22 +00:00
ip_dummynet.h Bring in the most recent version of ipfw and dummynet, developed 2010-03-02 17:40:48 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c (S)LIST_HEAD_INITIALIZER takes a (S)LIST_HEAD as an argument. 2009-12-28 22:56:30 +00:00
ip_encap.h
ip_fastfwd.c Virtualize the pfil hooks so that different jails may chose different 2009-10-11 05:59:43 +00:00
ip_fw.h + implement (two lines) the kernel side of 'lookup dscp N' to use the 2010-03-15 17:14:27 +00:00
ip_gre.c The NetBSD Foundation has granted permission to remove clause 3 and 4 from 2010-03-01 17:05:46 +00:00
ip_gre.h The NetBSD Foundation has granted permission to remove clause 3 and 4 from 2010-03-01 17:05:46 +00:00
ip_icmp.c Compare pointer to NULL rather than 0. 2009-10-13 20:29:14 +00:00
ip_icmp.h
ip_id.c
ip_input.c - boot-time size the ipv4 flowtable and the maximum number of flows 2010-03-22 23:04:12 +00:00
ip_ipsec.c The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
ip_ipsec.h Remove ifdefed out part of code, which seems to have originated a decade ago 2009-11-09 19:53:34 +00:00
ip_mroute.c No need to include security/mac/mac_framework.h here. 2010-02-18 22:26:01 +00:00
ip_mroute.h Switch cmd argument to u_long. This matches what if_ethersubr.c does and 2009-06-21 10:29:31 +00:00
ip_options.c No need to include security/mac/mac_framework.h here. 2010-02-18 22:26:01 +00:00
ip_options.h Add function ip_checkrouteralert(), which will be used 2009-03-04 02:51:22 +00:00
ip_output.c The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
ip_var.h Split up ip_drain() into an outer lock and iterator part and 2010-02-20 19:59:52 +00:00
ip.h use u_char instead of u_int for short bitfields. 2010-02-01 14:13:44 +00:00
pim_var.h Update stats in struct pimstat using two new macros: PIMSTAT_ADD() 2009-04-12 14:06:26 +00:00
pim.h
raw_ip.c Add pcb reference counting to the pcblist sysctl handler functions 2010-03-17 18:28:27 +00:00
sctp_asconf.c * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_asconf.h
sctp_auth.c Get rid of support of an old version of the SCTP-AUTH draft. 2010-01-16 20:04:17 +00:00
sctp_auth.h Use [] instead of [0] for flexible arrays. 2010-01-22 07:53:41 +00:00
sctp_bsd_addr.c Fix a race condition where a mutex was destroyed while sleeping on it. 2009-10-11 12:23:56 +00:00
sctp_bsd_addr.h
sctp_cc_functions.c Bugfix: Use formula from section 7.2.3 of RFC 4960. Reported by Martin Becke. 2009-10-27 18:17:07 +00:00
sctp_cc_functions.h
sctp_constants.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_crc32.c The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
sctp_crc32.h The proper fix for the delayed SCTP checksum is to 2010-03-12 22:58:52 +00:00
sctp_header.h Add missing SCTP_PACKED. Spotted by Irene Ruengeler. 2010-02-13 21:38:15 +00:00
sctp_indata.c Fix a off-by-one bug in zeroing out the mapping arrays. 2010-04-06 18:57:50 +00:00
sctp_indata.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_input.c * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_input.h
sctp_lock_bsd.h
sctp_os_bsd.h Get rid of support of an old version of the SCTP-AUTH draft. 2010-01-16 20:04:17 +00:00
sctp_os.h
sctp_output.c Use also SCTP/IPv6 checksum offloading in special cases. 2010-04-03 23:51:41 +00:00
sctp_output.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_pcb.c * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_pcb.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_peeloff.c
sctp_peeloff.h
sctp_structs.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_sysctl.c Adds the option of keeping per-cpu statistics in SCTP. This 2010-03-24 20:02:40 +00:00
sctp_sysctl.h Fix a bug where wrong initialization value 2009-07-28 15:07:41 +00:00
sctp_timer.c Support for VNET in SCTP (hopefully) 2009-09-17 15:11:12 +00:00
sctp_timer.h
sctp_uio.h Adds the option of keeping per-cpu statistics in SCTP. This 2010-03-24 20:02:40 +00:00
sctp_usrreq.c * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp_var.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
sctp.h Changes to the NR-Sack code so that: 2009-06-17 12:34:56 +00:00
sctputil.c Fix a off-by-one bug in zeroing out the mapping arrays. 2010-04-06 18:57:50 +00:00
sctputil.h * Fix some race condition in SACK/NR-SACK processing. 2010-04-03 15:40:14 +00:00
tcp_debug.c Remove the "The option TCPDEBUG requires option INET." requirement. 2009-06-10 10:39:41 +00:00
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c Properly free resources when destroying the TCP hostcache while 2010-02-09 21:31:53 +00:00
tcp_hostcache.h
tcp_input.c Honor the CE bit even when the CWR bit is set. 2010-04-10 12:47:06 +00:00
tcp_lro.c
tcp_lro.h
tcp_offload.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_offload.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_output.c Several years ago a feature was added to TCP that casued soreceive() to 2009-11-06 16:55:05 +00:00
tcp_reass.c Destroy TCP UMA zones (empty or not) upon network stack teardown 2010-03-07 15:58:44 +00:00
tcp_sack.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_seq.h
tcp_subr.c Add pcb reference counting to the pcblist sysctl handler functions 2010-03-17 18:28:27 +00:00
tcp_syncache.c Upon virtual network stack teardown properly release the TCP syncache 2010-02-20 21:45:04 +00:00
tcp_syncache.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_timer.c - spread tcp timer callout load evenly across cpus if net.inet.tcp.per_cpu_timers is set to 1 2010-03-20 19:47:30 +00:00
tcp_timer.h Add the ability to see TCP timers via netstat -x. This can be a useful 2009-09-16 05:33:15 +00:00
tcp_timewait.c Destroy TCP UMA zones (empty or not) upon network stack teardown 2010-03-07 15:58:44 +00:00
tcp_usrreq.c Add a comment to tcp_usr_accept() to indicate why it is we acquire the 2010-03-06 21:38:31 +00:00
tcp_var.h Destroy TCP UMA zones (empty or not) upon network stack teardown 2010-03-07 15:58:44 +00:00
tcp.h use u_char instead of u_int for short bitfields. 2010-02-01 14:13:44 +00:00
tcpip.h
toedev.h
udp_usrreq.c Add pcb reference counting to the pcblist sysctl handler functions 2010-03-17 18:28:27 +00:00
udp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
udp.h Added support for NAT-Traversal (RFC 3948) in IPsec stack. 2009-06-12 15:44:35 +00:00