freebsd-skq/sys/net
jhb afdad2635d Close a race when trying to lookup a gateway route in rt_check().
Specifically, if two threads were doing concurrent lookups and the existing
gateway was marked down, the the first thread would drop a reference on the
gateway route and then unlock the "root" route while it tried to allocate
a new route.  The second thread could then also drop a reference on the
same gateway route resulting in a reference underflow.  Fix this by
clearing the gateway route pointer after dropping the reference count but
before dropping the lock.  Secondly, in this same case, the second thread
would overwrite the gateway route pointer w/o free'ing a reference to the
route installed by the first thread.  In practice this would probably just
fix a lost reference that would result in a route never being freed.

This fixes panics observed in rt_check() and rtexpunge().

MFC after:	1 week
PR:		kern/112490
Insight from:	mehuljv at yahoo.com
Reviewed by:	ru (found the "not-setting it to NULL" part)
Tested by:	several
2007-10-22 19:01:26 +00:00
..
bpf_filter.c Make the type of the memory used by the BPF filter unsigned, so it 2007-09-13 09:00:32 +00:00
bpf_jitter.c
bpf_jitter.h
bpf.c Make sure that we refresh the PID on read(2) and write(2) operations. 2007-10-12 14:58:34 +00:00
bpf.h Additions from libpcap 0.9.8 unbreak the build. 2007-10-21 13:23:32 +00:00
bpfdesc.h Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which 2007-08-06 14:26:03 +00:00
bridgestp.c If the STP state machine is stopped then clear the bridge-id and root-id. 2007-08-18 12:06:13 +00:00
bridgestp.h - Ensure the path cost does not exceed 65535 in legacy STP mode. 2007-08-04 21:09:04 +00:00
bsd_comp.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
ethernet.h Use a uint16_t type for the vlan tag rather an int. 2007-10-18 21:52:31 +00:00
fddi.h
firewire.h
ieee8023ad_lacp.c Allow the LACP state to be queried from userland which at the moment is the 2007-07-05 09:18:57 +00:00
ieee8023ad_lacp.h Allow the LACP state to be queried from userland which at the moment is the 2007-07-05 09:18:57 +00:00
if_arc.h
if_arcsubr.c
if_arp.h
if_atm.h
if_atmsubr.c Remove obfuscating OpenBSD/NetBSD/BSDI/FreeBSD 2.x/FreeBSD 5.x ifdefs 2006-12-01 22:45:43 +00:00
if_bridge.c Use ETHER_BPF_MTAP so that the vlan tags are visible to bpf(4) when bridging a 2007-10-20 02:10:10 +00:00
if_bridgevar.h Add a bridge interface flag called PRIVATE where any private port can not 2007-08-01 00:33:52 +00:00
if_clone.c
if_clone.h
if_disc.c Fix some statements in disc(4) and about it: 2007-03-26 09:10:28 +00:00
if_dl.h
if_edsc.c Give a hint that softc can contain many things besides ifp. 2007-03-26 09:05:10 +00:00
if_ef.c
if_enc.c Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
if_ethersubr.c Use a uint16_t type for the vlan tag rather an int. 2007-10-18 21:52:31 +00:00
if_faith.c With exception of the if_name() macro, all definitions in net_osdep.h 2006-08-04 21:27:40 +00:00
if_fddisubr.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
if_fwsubr.c Remove GIANT_REQUIRED for upcoming changes in FireWire stack. 2007-06-05 14:15:45 +00:00
if_gif.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
if_gif.h
if_gre.c Sync comments to code: we now use priv_check() rather than suser() to 2007-06-26 23:01:01 +00:00
if_gre.h
if_iso88025subr.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
if_lagg.c Use ETHER_BPF_MTAP so that the vlan tags are visible to bpf(4) when stacked 2007-10-20 02:43:23 +00:00
if_lagg.h Fix two panics in lagg. 2007-10-12 03:03:16 +00:00
if_llc.h Move the __packed declarations. This makes sizeof(struct llc) 8 again 2006-12-01 17:50:11 +00:00
if_loop.c Use __NO_STRICT_ALIGNMENT, instead of special casing ia64 and sparc64. 2007-02-09 00:09:35 +00:00
if_media.c
if_media.h remove IFM_IEEE80211_HT40PLUS and IFM_IEEE80211_HT40MINUS; they 2007-09-18 20:30:40 +00:00
if_mib.c
if_mib.h
if_ppp.c Continue pre-7.0 privilege cleanup: update suser(9) comments to be priv(9) 2007-07-02 15:44:30 +00:00
if_ppp.h
if_pppvar.h Use callout mechanism instead of timeout()/untimeout(). 2006-12-05 18:54:21 +00:00
if_sl.c Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
if_slvar.h
if_sppp.h
if_spppfr.c
if_spppsubr.c Cast the ioctl define to the type of the variable being switched on. 2007-06-10 04:53:13 +00:00
if_stf.c Certain consumers of rtalloc like gif(4) and if_stf(4) lookup the 2007-09-23 17:50:17 +00:00
if_stf.h
if_tap.c Add a sysctl net.link.tap.up_on_open which defaults to zero; when it 2007-03-19 18:17:31 +00:00
if_tap.h Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
if_tapvar.h
if_tun.c Clean up after tun(4) properly; remove routes whose ifp is set to 2007-02-05 11:15:52 +00:00
if_tun.h
if_types.h Remove IPX over IP tunneling support, which allows IPX routing over IP 2007-06-13 14:01:43 +00:00
if_var.h The struct if_data members ifi_recvquota and ifi_xmitquota have been 2007-05-16 18:37:37 +00:00
if_vlan_var.h Prepare for 802.1p: 2007-02-28 22:05:30 +00:00
if_vlan.c The bridging output function puts the mbuf directly on the interfaces send 2007-10-18 21:22:15 +00:00
if.c First in a series of changes to remove the now-unused Giant compatibility 2007-07-27 11:59:57 +00:00
if.h Add IFCAP_LRO flag for drivers to announce their TCP Large Receive Offload 2007-06-11 20:08:11 +00:00
iso88025.h
netisr.c Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which 2007-08-06 14:26:03 +00:00
netisr.h
pfil.c
pfil.h Correct the definition of PFIL_HOOKED() so that it compares 2007-06-08 12:43:25 +00:00
pfkeyv2.h Commit the change from FAST_IPSEC to IPSEC. The FAST_IPSEC 2007-07-03 12:13:45 +00:00
ppp_comp.h
ppp_deflate.c
ppp_defs.h
ppp_tty.c Use callout mechanism instead of timeout()/untimeout(). 2006-12-05 18:54:21 +00:00
radix.c
radix.h
raw_cb.c
raw_cb.h
raw_usrreq.c Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
route.c Close a race when trying to lookup a gateway route in rt_check(). 2007-10-22 19:01:26 +00:00
route.h
rtsock.c Do not set the RTF_GATEWAY flag if RTF_LLINFO is set, it doesn't make much 2007-09-08 19:28:45 +00:00
slcompress.c
slcompress.h
slip.h
zlib.c
zlib.h